Pregunta

¿Cuál es la diferencia entre una unión interna y una externa? ¿Cuál es el significado preciso de estos dos tipos de combinaciones?

¿Fue útil?

Solución

Echa un vistazo a lo excelente de Jeff Atwood:

Una explicación visual de las uniones SQL

Marc

Otros consejos

Wikipedia tiene un largo y agradable artículo sobre el tema [aquí] ( http: // en.wikipedia.org/wiki/Join_(SQL))

Pero básicamente:

  • Las combinaciones internas devuelven resultados donde hay filas que satisfacen la cláusula where en TODAS las tablas
  • Las uniones externas devuelven resultados donde hay filas que satisfacen la cláusula where en al menos una de las tablas

Utiliza INNER JOIN para devolver todas las filas de ambas tablas donde hay una coincidencia. es decir. en la tabla resultante, todas las filas y columnas tendrán valores.

En OUTER JOIN, la tabla resultante puede tener columnas vacías. La unión externa puede ser IZQUIERDA o DERECHA

LEFT OUTER JOIN devuelve todas las filas de la primera tabla, incluso si no hay coincidencias en la segunda tabla.

RIGHT OUTER JOIN devuelve todas las filas de la segunda tabla, incluso si no hay coincidencias en la primera tabla.

INNER JOIN devuelve filas que existen en ambas tablas

OUTER JOIN devuelve todo filas que existen en cualquier tabla

La unión interna solo devuelve una fila unida si el registro aparece en ambas tablas. La unión externa según la dirección mostrará todos los registros de una tabla, unidos a los datos de la tabla combinada donde existe una fila correspondiente

Usando un conjunto matemático,

Inner Join is A ^ B;
Outer Join is A - B.

Entonces es (+) su lado A en la consulta.

Suponga un esquema de ejemplo con los clientes y el pedido:

  • UNIÓN INTERNA: recupera clientes solo con pedidos.

  • IZQUIERDA EXTERIOR ÚNETE: recupera a todos los clientes con o sin pedidos.

  • UNIÓN EXTERIOR DERECHA: recupera todos los pedidos con o sin registros de clientes coincidentes.

Para obtener información un poco más detallada, consulte Inner y las declaraciones SQL de unión externa

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top