MySQL dokumentace pokrývá toto téma.
Zde je shrnutí. Při použití join
nebo inner join
, on
podmínka je volitelná. To se liší od standardu ANSI a liší se od téměř jakékoli jiné databáze. Výsledkem je cross join
. Podobně můžete použít on
klauzule s cross join
, který se také liší od standardního SQL.
Křížové spojení vytvoří kartézský součin – tedy každou možnou kombinaci 1 řádku z první tabulky a 1 řádku z druhé tabulky. Křížové spojení pro tabulku se třemi řádky ('a', 'b' a 'c') a tabulku se čtyřmi řádky (řekněme 1, 2, 3, 4) by mělo 12 řádků.
V praxi, pokud chcete provést křížové spojení, použijte cross join
:
from A cross join B
je mnohem lepší než:
from A, B
a:
from A join B -- with no on clause
on
klauzule je vyžadována pro pravé nebo levé vnější spojení, takže diskuse pro ně není relevantní.
Pokud potřebujete porozumět různým typům spojení, musíte si prostudovat relační databáze. Stackoverflow není vhodné místo pro tuto úroveň diskuse.