In MySQL scrivendo JOIN
non qualificato implica INNER JOIN
. In altre parole il INNER
in INNER JOIN
è facoltativo. INNER
e CROSS
sono sinonimi in MySQL. Per chiarezza scrivo JOIN
o INNER JOIN
se ho una condizione di adesione e CROSS JOIN
se non ho una condizione.
La sintassi consentita per i join è descritta nella documentazione .
L'effetto è lo stesso, ma la storia dietro di loro è diversa. La sintassi della virgola è dello standard ANSI-89. Tuttavia ci sono una serie di problemi con questa sintassi, quindi nello standard ANSI-92 è stata introdotta la parola chiave JOIN.
Ti consiglio vivamente di sempre usa la sintassi JOIN anziché la virgola.
T1 JOIN T2 ON ...
è più leggibile diT1, T2 WHERE ...
.- È più gestibile perché le relazioni tra le tabelle ei filtri sono chiaramente definiti anziché mescolati insieme.
- La sintassi JOIN è più facile da convertire in OUTER JOIN rispetto alla sintassi della virgola.
- Miscelare la virgola e la sintassi JOIN nella stessa istruzione può dare curiosi errori dovuti alle regole di precedenza.
- È meno probabile che si crei accidentalmente un prodotto cartesiano quando si utilizza la sintassi JOIN a causa di una clausola di join dimenticata, perché le clausole di join sono scritte accanto ai join ed è facile vedere se ne manca una.