Уикипедия:
„В математиката двоичната операция е комутативна, ако промяната на реда на операндите не променя резултата. Това е фундаментално свойство на много двоични операции и много математически доказателства зависят от него.“
Отговор:
не, лявото съединение не е комутативно. И вътрешното присъединяване е.
Но това не е точно това, което питате.
Това е следната заявка:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(всички свързани към колона с id), еквивалентно на:
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
Отговор:
Също така не. Обединенията и обединенията всъщност не постигат едно и също нещо, най-общо казано. В някои случаи може да сте в състояние да ги напишете еквивалентно, но не мисля, че показвате толкова общ псевдо sql. Изглежда, че ON конституцията не трябва да работи (може би нещо, за което не знам в MySQL?)
Ето опростен набор от заявки, които според мен биха били еквивалентни.
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
Редактиране 2:
Ето още един пример, който е по-близо до вашия, но по същество същият.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
е същото като
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
Но аз все още не мисли, че отговарям на истинския ти въпрос.