Vinzenz Mai: JOIN und WHERE bei vier Tabellen

Beitrag lesen

Hallo,

Wie ist denn dieses Rouven-Zitat zu verstehen?

"Der FULL OUTER JOIN kommt dem ursprünglichen Kreuzprodukt von allen Joins am nächsten.

am nächsten. Nur am nächsten. Nicht mehr. Es ist nicht das Gleiche.

Er ist gewissermaßen die Kombination aus LEFT und RIGHT-JOIN"

wie ich Dir bereits anhand der Umsetzung mittels UNION zeigte

Das ist nicht das kartesische Produkt?

Ja, FULL OUTER JOIN ist nicht das kartesische Produkt.

CROSS JOIN ist das kartesische Produkt?

Ja, CROSS JOIN ist das kartesische Produkt.

Den impliziten CROSS JOIN bekommst Du übrigens über den Komma-Operator

  
SELECT  
    a.*,    -- * nur für Demozwecke!  
    b.*  
FROM  
    a,  
    b  

ist äquivalent zu

  
SELECT  
    a.*,    -- * nur für Demozwecke!  
    b.*  
FROM  
    a  
CROSS JOIN  
    b  

und hat nichts mit

  
SELECT  
    a.*,    -- * nur für Demozwecke!  
    b.*  
FROM  
    a  
FULL OUTER JOIN  
    b  
ON  
    <join-bedingung>  

zu tun.

Am besten nimmst Du Dir einen netten Client mit einer GUI wie z.B. den MySQL-Query-Browser, legst Dir ein paar Tabellen an und schaust Dir die Ergebnisse verschiedener (aber ähnlicher) Queries an. Vollziehe die Beispiele von Rouven und mir nach.

Freundliche Grüße

Vinzenz