Syntaxproblem bei multiplem join

dennis80

Neuer Benutzer
Beiträge
1
Hallo zusammen,
ich komm hier irgendwie nicht weiter und bitte um kleine Hilfestellung....

Tabelle A
ID A1 A2
1 A B

TABELLE B

ID B1 B2
1 C D

TABELLE C

ID C1 C2
1 E F
1 G H
1 I J

Der Join für Tabelle A und B funktioniert super:

Code:
Select
A.A1
B.B2

FROM B
INNER JOIN B ON A.ID = B.ID

Jetzt möchte ich noch Tabelle C verknüpfen, aber für die ID 1 werden mehr als ein Datensatz geliefert. Ich bekomme es hin, jeden Datensatz auszulesen, der unter der ID1 zu finden ist:

Code:
Select
A.A1
B.B2
C.C2


FROM B
INNER JOIN B ON A.ID = B.ID
FULL  JOIN C ON A.ID = C.ID

Ergebnis wäre :

A1 B2 C2
A D F
(NULL) (NULL) H
(NULL) (NULL) J

Jetzt möchte ich aber immer nur einen bestimmten Datensatz von Tabelle C verknüpfen, in etwa wie

Code:
Select
A.A1
B.B2
(SELECT C2 FROM C WHERE C1='I')


FROM B
INNER JOIN B ON A.ID = B.ID
FULL  JOIN C ON A.ID = C.ID

Ich möchte die zeilen quasi als spalten auslesen, so daß es nachher in etwa so aussieht:

A1 B2 C2_E C2_G C2_I
A D F H J


Leider bin ich damit nicht so weit gekommen... Kann mir bitte jemand helfen ? Vielen Dank !
 
Werbung:
Code:
andreas@[local]:5432/test# select * from ta;
 id | a1 | y2
----+----+----
  1 | a  | b
(1 row)

andreas@[local]:5432/test# select * from tb;
 id | b1 | b2
----+----+----
  1 | c  | d
(1 row)

andreas@[local]:5432/test# select * from tc;
 id | c1 | c2
----+----+----
  1 | e  | f
  1 | g  | h
  1 | i  | j
(3 rows)

andreas@[local]:5432/test# select a.a1, b.b2, ce.c2, cg.c2, ci.c2 from ta a inner join tb b on a.id=b.id inner join tc ce on a.id=ce.id and ce.c1='e' inner join tc cg on a.id=cg.id and cg.c1='g' inner join tc ci on ci.id=a.id and ci.c1='i';
 a1 | b2 | c2 | c2 | c2
----+----+----+----+----
 a  | d  | f  | h  | j
(1 row)

andreas@[local]:5432/test#

paßt das so? Du kannst den Spaltennamen im Resultat noch andere Namen geben, aber ich denke, das schaffst Du selber.

Grüße von Deutschlands größter Insel...
 
Zurück
Oben