sintaxis right left inner funciona explicacion con como sql inner-join cross-join

right - sql inner join explicacion



¿CROSS JOIN es un sinónimo de INNER JOIN sin ON cláusula? (2)

Me pregunto si CROSS JOIN se puede reemplazar de forma segura con INNER JOIN en cualquier consulta cuando se encuentre.

¿Es INNER JOIN sin ON o USING exactamente lo mismo que CROSS JOIN ? En caso afirmativo, ¿se ha inventado el tipo CROSS JOIN solo para expresar mejor la intención en una consulta?

Un apéndice a esta pregunta sería:

¿Puede haber una diferencia con el uso de DBMS modernos y ampliamente utilizados al usar CROSS JOIN ... WHERE x , INNER JOIN ... ON ( x ) o INNER JOIN ... WHERE ( x ) ?

Gracias.


En todas las bases de datos modernas, todas estas construcciones están optimizadas para el mismo plan.

Algunas bases de datos (como SQL Server ) requieren una condición ON después de INNER JOIN , por lo que su tercera consulta simplemente no se analizará allí.

El alcance de visibilidad de las tablas está en orden JOIN , por lo que esta consulta:

SELECT * FROM s1 JOIN s2 ON s1.id IN (s2.id, s3.id) CROSS JOIN s3

no analizará, mientras que éste:

SELECT * FROM s2 CROSS JOIN s3 JOIN s1 ON s1.id IN (s2.id, s3.id)

será.


Una combinación cruzada sin formato es una que no tiene una cláusula donde lo que significa que se produce un registro para cada combinación de las tablas izquierda y derecha que se unen con nulos insertados donde no hay datos del lado izquierdo o derecho.

Si agrega una cláusula where a una combinación cruzada, esto lo hace equivalente a una combinación interna, ya que la cláusula where hace lo mismo que el ON en la combinación interna.

Sin embargo, las uniones internas generalmente son más agradables de usar, ya que esto separa la condición de ENCENDIDO del resto de las cláusulas en donde es más fácil de entender.