Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] SQL: 2 verschiedene Daten vom gleichen Attribut

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] SQL: 2 verschiedene Daten vom gleichen Attribut

    Guten Morgen,

    ich stehe als Anfänger vor folgendem Problem und komme einfach auf keine Lösung.

    Folgendes Problem:
    Ich habe eine Tabelle "Main", eine Tabelle "Main-Zuordnung" und "Beschreibung".

    In der Tabelle Beschreibung sind in einem Attribut alle Beschreibungen zusammengefasst. Das heißt ich greife mit der Tabelle Main über die Tabelle Main-Zuordnung auf die Beschreibung zu, und ein weiteres Mal direkt von Main auf Beschreibung um einen anderen Wert zu erhalten.

    Main-> Main-Zuordnung -> Beschreibung (Beschreibungstext A)

    Main-> Beschreibung (Beschreibungstext B) hoffe das war soweit verständlich.

    Greife ich einzeln auf das Feld zu gibt es keine Probleme, aber beide Werte auszugeben funktioniert nicht, da ich nicht zweimal auf das gleiche Ziel von unterschiedlichen Quellen joinen kann.

    Hier mal das Beispiel (ein Wert/direkt):
    Code:
    SELECT 
      tabelle_beschreibung.kurztext as "Beschreibungstext A"
    FROM 
      tabelle_beschreibung, 
      tabelle_main
    WHERE 
      tabelle_main.kategorieID = tabelle_beschreibung.fsid;
    Und (ein Wert/zweiter Weg)
    Code:
    SELECT 
      tabelle_beschreibung.kurztext as "Beschreibungstext B"
    FROM 
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    WHERE 
      tabelle_main.ID = tabelle_main_zuordnung.mainID AND
      tablle_main_zuordnung.ID = tabelle_beschreibung.fsid
    Ich habe schon versucht beide Abfragen mit UNION zu Verknüpfen, dann schreibt er mir aber die Werte von Beschreibungstext B in die Spalte von A mit hinein, sie sollen aber in einer seperaten Spalte simultan stehen.

    Habe folgendes auch probiert:

    Code:
    SELECT
    tabelle_beschreibung.kurztext as "Beschreibungstext A"
    
    (SELECT 
      tabelle_beschreibung.kurztext
    FROM 
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    WHERE 
      tabelle_main.ID = tabelle_main_zuordnung.mainID AND
      tablle_main_zuordnung.ID = tabelle_beschreibung.fsid
      ) as "Beschreibungstext B"
    
      FROM
      tabelle_beschreibung, 
      tabelle_main_zuordnung,
      tabelle_main
    
      WHERE
    
      tabelle_main.kategorieID = tabelle_beschreibung.fsid;
    Würde funktionieren, wenn ich gezielt nach einer Zeile Frage, wenn ich jedoch alles ausgeben möchte bekomme ich folgenden Fehler:

    ERROR: more than one row returned by a subquery used as an expression

    Hoffe das war verständlich


  • #2
    Zitat von Silvervyse Beitrag anzeigen

    Greife ich einzeln auf das Feld zu gibt es keine Probleme, aber beide Werte auszugeben funktioniert nicht, da ich nicht zweimal auf das gleiche Ziel von unterschiedlichen Quellen joinen kann.

    2 mal joinen, daher expliziete join-syntax verwenden und Aliase verwenden.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Einzeln bekomm ich es mit JOIN-Befehl hin

      Code:
          SELECT
      	tabelle_beschreibung.kurztext AS BeschreibungstextB
          FROM
      	tabelle_main
      
      	JOIN (tabelle_main_zuordnung
      	JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid) 
               ON tabelle_main.ID = tabelle_main_zuordnung.mainID
      Code:
          SELECT
      	tabelle_beschreibung.kurztext AS BeschreibungstextA
          FROM
      	tabelle_main 
          JOIN tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)
      Bin mit SQL leider noch nicht so geschickt, bekomme beide Anweisungen jetzt nicht in eine, da er mir dann eben sagt:

      Code:
      ERROR:  table name "tabelle_beschreibung" specified more than once

      Kommentar


      • #4
        Zitat von Silvervyse Beitrag anzeigen

        Bin mit SQL leider noch nicht so geschickt, bekomme beide Anweisungen jetzt nicht in eine, da er mir dann eben sagt:
        Dann halt Doku lesen, diese sagt:

        Code:
        Command:     SELECT
        Description: retrieve rows from a table or view
        Syntax:
        [ WITH [ RECURSIVE ] with_query [, ...] ]
        SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
            * | expression [ [ AS ] output_name ] [, ...]
            [ FROM from_item [, ...] ]
            [ WHERE condition ]
            [ GROUP BY expression [, ...] ]
            [ HAVING condition [, ...] ]
            [ WINDOW window_name AS ( window_definition ) [, ...] ]
            [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
            [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
            [ LIMIT { count | ALL } ]
            [ OFFSET start [ ROW | ROWS ] ]
            [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
            [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
        
        where from_item can be one of:
        
            [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
            [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
            with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
            [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...]
        ) ]
            [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
            from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
        
        and with_query is:
        
            with_query_name [ ( column_name [, ...] ) ] AS ( select | values | insert | update | delete )
        
        TABLE [ ONLY ] table_name [ * ]
        select ... from join_type <table> as alias1 on ... join_type <table> as alias2 on ...
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Bin immer noch froh das ich es einzeln zusammen bringe, aber ich bin mit solchen Schnipseln als Anfänger noch etwas überfordert.


          Komme hier mit der Syntax nicht klar

          Code:
          SELECT
          	tabelle_beschreibung.kurztext 
          FROM 
          
          JOIN AS alias1 (tabelle_main_zuordnung JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid)
          			ON tabelle_main.ID = tabelle_main_zuordnung.mainID
          
          JOIN AS alias2	tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)

          Kommentar


          • #6
            Zitat von Silvervyse Beitrag anzeigen
            Bin immer noch froh das ich es einzeln zusammen bringe, aber ich bin mit solchen Schnipseln als Anfänger noch etwas überfordert.


            Komme hier mit der Syntax nicht klar

            Code:
            SELECT
            	tabelle_beschreibung.kurztext 
            FROM 
            
            JOIN AS alias1 (tabelle_main_zuordnung JOIN tabelle_beschreibung ON tabelle_main_zuordnung.ID = tabelle_beschreibung.fsid)
            			ON tabelle_main.ID = tabelle_main_zuordnung.mainID
            
            JOIN AS alias2	tabelle_beschreibung ON (tabelle_beschreibung.fsid = tabelle_main.kategorieID)

            select tabelle.spalte, alias1.spalte, alias2.spalte from tabelle left join andere_tabelle as alias1 on ... left join andere_tabelle as alias2 on ... where ...


            und nun stell dich nicht so an.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Bin gerade nicht so wirklich durchgestiegen, wieder was gelernt.

              Funktioniert jetzt, herzlichen Dank!

              Kommentar

              Lädt...
              X