Wikipedia:
"Dalam matematika, operasi biner adalah komutatif jika mengubah urutan operan tidak mengubah hasilnya. Ini adalah sifat dasar dari banyak operasi biner, dan banyak bukti matematika bergantung padanya."
Jawaban:
tidak, gabungan kiri tidak komutatif. Dan inner join adalah.
Tapi sebenarnya bukan itu yang Anda tanyakan.
Apakah pertanyaan berikut:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(semua bergabung ke kolom id) setara dengan:
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
Jawaban:
Juga tidak. Serikat dan bergabung tidak benar-benar mencapai hal yang sama, secara umum. Dalam beberapa kasus Anda mungkin dapat menulisnya secara setara, tetapi saya tidak berpikir begitu umum pseudo sql yang Anda tunjukkan. Konstitusi ON sepertinya seharusnya tidak berfungsi (mungkin sesuatu yang saya tidak tahu di MySQL?)
Berikut adalah kumpulan kueri yang disederhanakan yang menurut saya akan setara.
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
Sunting 2 :
Berikut contoh lain yang lebih dekat dengan Anda tetapi pada intinya sama.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
sama dengan
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
Tapi saya tetap jangan berpikir saya menjawab pertanyaan Anda yang sebenarnya.