Veröffentlicht 9. August 200520 j Hi, habe mal eine Frage bezüglich SQL: habe 2 Tabellen: person id name 1 Hans 2 Klaus 3 Ralf liste p1 p2 1 2 2 1 3 1 Die Spalten P1 und P2 enthalten jeweils die ID's aus der person Tabelle Wie muss ich jetzt die Tabellen abfragen damit ich als Ergebnis folgendes bekomme: ergebnis p1 p2 Hans Klaus Klaus Hans Ralf Hans Mit SELECT person.name FROM person,liste WHERE person.id=liste.p1 bekomm ich nur die Namen der ersten Spalte angezeigt. Ich weiss jetzt leider nicht wie ich weitermachen muss um auch Spalte p2 in Namen umzuwandeln. Sollte ja gehen. Danke!! Gruß Scratch
9. August 200520 j Welches ®DBMS? Falls MySQL: SELECT b.name,c.name FROM liste AS a LEFT JOIN person AS b ON b.id=a.p1 LEFT JOIN person AS c ON c.id=a.p2
9. August 200520 j Hallo, wie wär es mit dieser Lösung: select ps1.name, ps2.name from person [as] ps1 , person [as] ps2 , liste [as] l where l.p1 = ps1.id and l.p2 = ps2.id; Ansonsten wie bereits geschrieben, bitte die Datenbank mit angeben. Gruss, Axl
11. August 200520 j funktioniert beides! Ersteres ist ja auch die elegantere Schreibweise von zweiterem...
11. August 200520 j Und ersteres zeigt Dir NULL an, bei Namen, die in der Zuordnungstabelle in einem der beiden Attribute enthalten sind, aber keinen entsprechenden Eintrag in der Namenstabelle haben, weil LEFT JOIN. Wenn Du also wirklich nur die Zuordnung zweier Namen haben willst, Die es beide auch in der Namenstabelle gibt, dann nimm das Statement von AxlHammer, z.B. wenn die Inhalte deiner Zuordnungstabelle inkonsistent sind ...
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.