Ilja: Schnittmenge bilden mit MySQL

Beitrag lesen

yo,

Ich habe gehört dass man das mit einer Verkettung von join-Befehlen realisieren kann, aber wie?

zum beispiel mit self joins, sprich dreimal deine tabelle mit jeweils unterschiedlichen alias-namen. in der WHERE klausel selektierst du in der jeweiligen tabelle die Bd_Id_fk und den join der Tabellen in der ON klausel verknüpfst du das datum der tabellen miteinander. ein distinct kannst du dann noch am ende einsetzen, musst du aber nicht, je nachdem, was dir lieber ist.

SELECT distinct t1.Buch_Datum
FROM Betriebsdaten_Stammdaten t1
INNER JOIN Betriebsdaten_Stammdaten t2 ON t2.Buch_Datum= t1.Buch_Datum
INNER JOIN Betriebsdaten_Stammdaten t3 ON t3.Buch_Datum= t2.Buch_Datum
WHERE t1.Bd_Id_fk = 1
AND t2.Bd_Id_fk = 3
AND t3.Bd_Id_fk = 433
;

eine andere lösung besteht mit unterabfragen, die ich eleganter finde.

SELECT t1.Buch_Datum
FROM Betriebsdaten_Stammdaten t1
WHERE t1.Bd_Id_fk = 1
AND t1.Buch_Datum IN (SELECT t2.Buch_Datum
                      FROM Betriebsdaten_Stammdaten t2
                      WHERE t2.Bd_Id_fk = 3
                     )
AND t1.Buch_Datum IN (SELECT t3.Buch_Datum
                      FROM Betriebsdaten_Stammdaten t3
                      WHERE t3.Bd_Id_fk = 433
                     )
;

Ilja