Wikipedia:
"In matematica, un'operazione binaria è commutativa se la modifica dell'ordine degli operandi non cambia il risultato. È una proprietà fondamentale di molte operazioni binarie e da essa dipendono molte prove matematiche."
Risposta:
no, un join sinistro non è commutativo. E lo è l'unione interna.
Ma non è proprio quello che stai chiedendo.
È la seguente query:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(tutti uniti a una colonna id) equivalente a:
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
Risposta:
Anche no. I sindacati e le unioni in realtà non ottengono la stessa cosa, in generale. In alcuni casi potresti essere in grado di scriverli in modo equivalente, ma non penso che tu stia mostrando uno pseudo sql così generale. La costituzione ON sembra non funzionare (forse qualcosa di cui non so in MySQL?)
Ecco un insieme semplificato di query che penso sarebbero equivalenti.
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
Modifica 2:
Ecco un altro esempio più vicino al tuo ma in sostanza lo stesso.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
è uguale a
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
Ma io ancora non pensare che sto rispondendo alla tua vera domanda.