¿Es posible escribir una consulta de combinación sin ON
declaración? y en qué se diferencian estas uniones LEFT JOIN, RIGHT JOIN
.
mysql
join
left-join
inner-join
right-join
Alexander T.
fuente
fuente
ON
cláusula le dice al servidor cómo se relacionan las tablas, no. Si sus diferentes tipos de combinación dan el mismo resultado, lo está haciendo mal de alguna manera, y agregar algo de código podría ayudarnos a detectar su problema. Mientras tanto, diríjase al blog de Jeff Atwood para una introducción de 2 minutos a los diferentes tipos de combinación.Respuestas:
La documentación de MySQL cubre este tema.
He aquí una sinopsis. Cuando se usa
join
oinner join
, laon
condición es opcional. Esto es diferente del estándar ANSI y diferente de casi cualquier otra base de datos. El efecto es across join
. De manera similar, puede usar unaon
cláusula concross join
, que también difiere del SQL estándar.Una unión cruzada crea un producto cartesiano, es decir, cada combinación posible de 1 fila de la primera tabla y 1 fila de la segunda. La unión cruzada para una tabla con tres filas ('a', 'b' y 'c') y una tabla con cuatro filas (digamos 1, 2, 3, 4) tendría 12 filas.
En la práctica, si desea realizar una combinación cruzada, utilice
cross join
:es mucho mejor que:
y:
La
on
cláusula es necesaria para una combinación externa derecha o izquierda, por lo que la discusión no es relevante para ellos.Si necesita comprender los diferentes tipos de uniones, entonces necesita estudiar un poco sobre bases de datos relacionales. Stackoverflow no es un lugar apropiado para ese nivel de discusión.
fuente
Vea algún ejemplo en http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Puede usar 'USING' en lugar de 'ON' como en la consulta
fuente
Es posible que también desee investigar el uso de UNION, que combina varias tablas para una salida: SQL : combina dos tablas para una salida
fuente