MySQL documentatie behandelt dit onderwerp.
Hier is een samenvatting. Bij gebruik van join
of inner join
, de on
voorwaarde is optioneel. Dit is anders dan de ANSI-standaard en verschilt van bijna elke andere database. Het effect is een cross join
. Op dezelfde manier kunt u een on
. gebruiken clausule met cross join
, die ook verschilt van standaard SQL.
Een cross join creëert een Cartesiaans product -- dat wil zeggen, elke mogelijke combinatie van 1 rij uit de eerste tabel en 1 rij uit de tweede. De cross join voor een tabel met drie rijen ('a', 'b' en 'c') en een tabel met vier rijen (zeg 1, 2, 3, 4) zou 12 rijen hebben.
In de praktijk, als je een cross join wilt doen, gebruik dan cross join
:
from A cross join B
is veel beter dan:
from A, B
en:
from A join B -- with no on clause
De on
clausule is vereist voor een rechter of linker outer join, dus de discussie is niet relevant voor hen.
Als je de verschillende soorten joins wilt begrijpen, moet je wat studeren over relationele databases. Stackoverflow is geen geschikte plaats voor dat niveau van discussie.