Wikipedia:
"In der Mathematik ist eine binäre Operation kommutativ, wenn das Ändern der Reihenfolge der Operanden das Ergebnis nicht ändert. Es ist eine grundlegende Eigenschaft vieler binärer Operationen, und viele mathematische Beweise hängen davon ab."
Antwort:
Nein, eine Linksverknüpfung ist nicht kommutativ. Und Inner Join ist.
Aber das ist nicht wirklich das, wonach Sie fragen.
Ist die folgende Abfrage:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(alle mit einer ID-Spalte verbunden) Äquivalent zu:
TableA INNER JOIN TableB
INNER JOIN TableC
LEFT JOIN TableD
UNION
TableA INNER JOIN TableB
LEFT JOIN TableC ON TableB.c_id IS NULL
LEFT JOIN TableD
Antwort:
Auch Nein. Unions und Joins erreichen im Allgemeinen nicht wirklich dasselbe. In einigen Fällen können Sie sie möglicherweise gleichwertig schreiben, aber ich glaube nicht, dass Sie so allgemeines Pseudo-SQL zeigen. Die ON-Verfassung scheint nicht zu funktionieren (vielleicht etwas, worüber ich in MySQL nichts weiß?)
Hier ist ein vereinfachter Satz von Abfragen, die meiner Meinung nach gleichwertig wären.
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
SELECT *
FROM TableA a
INNER JOIN
TableB b ON a.id = b.id_a
UNION
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
WHERE TableB.id IS NULL
Bearbeiten 2:
Hier ist ein weiteres Beispiel, das Ihrem ähnlicher ist, aber im Wesentlichen dasselbe ist.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
ist dasselbe wie
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
INNER JOIN TableC c ON b.id = c.id_b
UNION
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
WHERE TableC.id IS NULL
Aber ich noch glaube nicht, dass ich deine eigentliche Frage beantworte.