Wikipedia:
"I matematik er en binær operation kommutativ, hvis ændring af rækkefølgen af operanderne ikke ændrer resultatet. Det er en grundlæggende egenskab ved mange binære operationer, og mange matematiske beviser afhænger af det."
Svar:
nej, en venstre join er ikke kommutativ. Og indre sammenføjning er.
Men det er egentlig ikke det, du spørger om.
Er følgende forespørgsel:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(alle sammenføjet til en id-kolonne) svarende til:
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
Svar:
Også nej. Fagforeninger og sammenslutninger opnår ikke rigtig det samme, generelt set. I nogle tilfælde kan du muligvis skrive dem tilsvarende, men jeg tror ikke, at du viser så generel pseudo sql. ON-forfatningen ser ud til, at den ikke burde virke (måske noget, jeg ikke kender til i MySQL?)
Her er et forenklet sæt forespørgsler, som jeg tror ville svare til.
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
Rediger 2:
Her er et andet eksempel, der er tættere på din, men i det væsentlige det samme.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
er det samme som
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
Men jeg stadig tror ikke, jeg svarer på dit rigtige spørgsmål.