I've recently discovered that the ON clause of a LEFT JOIN may contain values such as (1 = 1).
This is upsetting to me, as it breaks my perception of how joins function.
I've encountered a more elaborate version of the following situation:
SELECT DISTINCT Person.ID, ...
FROM Person LEFT JOIN Manager
ON (Manager.ID = Person.ID OR Manager.ID = -1))
WHERE (...)
It's perfectly legal. What does "Manager.ID = -1" accomplish, if anything? How can this effect the Join?
If person table is:
id name
1 Person One
2 Person Two
3 Person Three
4 Person Four
5 Person Five
If manager table is
id name
-1 Admin
2 Manager One
3 Manager Two
if the query is:
SELECT DISTINCT *
FROM Person LEFT JOIN Manager
ON (Manager.id = Person.id OR Manager.id = -1)
Then the result is:
Person One -1 Admin
Person Two -1 Admin
Person Two 2 Manager One
Person Three -1 Admin
Person Three 3 Manager Two
Person Four -1 Admin
Person Five -1 Admin
Here all person rows joins with the -1 Admin (on manager table) AND if the same id exist in manager table one more join occurs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With