Gerhard: Matrix aus 3 Tabellen

Beitrag lesen

Hallo,

also wenn ich das richtig verstehe, brauchst du nur 2 Joins:

1. einen Cross-Join zwischen Tabelle A und Tabelle B => Damit bekommst du alle deine möglichen Verknüpfungspunkte.
2. davon ausgehend nun einen Left-Outer-Join auf die Tabelle C mit der Bedingung, das genau dieser Punkt schon in der Tabelle C vorhanden ist.
Left-Outer-Join deshalb, weil du mit einem Inner-Join ja alle Datensätze wieder rausfiltern würdest, bei denen der Join nicht aufgeht, sprich: wo noch keine Verknüpfung besteht.
Dann kannst du mittels decode (in Oracle-Sprache) oder case sehen, ob dort schon ein Punkt ist.

Also ca. so:

select tabA.id, tabB.id, case when tabC.id is not null then 'Verknüpfung vorhanden' else 'Keine Verknüpfung' end  
from tabA  
cross join tabB  
left outer join tabC on tabC.tabA_id = tabA.id  
                    and tabC.tabB_id = tabB.id

Für diese Lösung gebe ich aber keine Gewähr :-)

lG,
Gerhard