2010-04-11 16 views

Respuesta

7

El único tipo de combinación que realmente necesita es LEFT OUTER JOIN. Cualquier otro tipo de unión se puede reescribir en términos de una o más combinaciones externas izquierdas, y posiblemente algún tipo de filtrado. Entonces, ¿por qué necesitamos todos los demás? ¿Es solo para confundir a la gente? ¿No sería más simple si hubiera un solo tipo de unión?

También podría preguntar: ¿Por qué tener ambos a <= b y b >= a? ¿No hacen esto lo mismo? ¿No podemos deshacernos de uno de ellos? ¡Simplificaría las cosas!

A veces es más fácil cambiar <= por >= en lugar de intercambiar los argumentos por la ronda. Del mismo modo, una combinación de izquierda y una de derecha son lo mismo solo con los operandos intercambiados. Pero nuevamente es práctico tener ambas opciones en lugar de requerir que las personas escriban sus consultas en un orden específico.

Otra cosa que podría hacer es: En la lógica ¿Por qué tenemos AND, OR, NOT, XOR, NAND, NOR, etc? ¡Todos estos pueden ser reescritos en términos de NAND s! ¿Por qué no solo tienes NAND?Bueno, es awkward para escribir un OR en términos de NAND s, y no es tan obvio cuál es la intención - si escribe OR, la gente sabe de inmediato lo que quiere decir. Si escribe un montón de NAND s, no es obvio lo que está tratando de lograr.

De manera similar, si desea hacer a FULL OUTER JOIN b, puede hacer una combinación de la izquierda y una de la derecha, eliminar los resultados duplicados y luego unir todo. Pero eso es un dolor, así que hay una forma abreviada de hacerlo.

¿Cuándo usa cada una? Aquí hay una regla simplificada:

  • Si siempre quiere una fila de resultados para cada fila en la tabla IZQUIERDA, use una UNIÓN EXTERIOR IZQUIERDA.
  • Si siempre quiere una fila de resultados para cada fila en la tabla DERECHA, use una DERECHA UNIÓN EXTERIOR.
  • Si siempre quiere una fila de resultados para cada fila en cualquiera de las tablas, use un FULL OUTER JOIN.
  • Si solo desea una fila de resultados cuando hay una fila en ambas tablas, use una UNIÓN INTERNA.
  • Si desea todos los pares posibles de filas, una fila de cada tabla, use una UNIÓN CRUZADA.
1

inner join - se une a las filas de ambos conjuntos de partido sobre la base de los criterios especificados.

outer join - selecciona todo un conjunto, junto con los elementos coincidentes o vacíos (si no coinciden) del otro conjunto. Las uniones externas pueden ser left o right, para especificar qué conjunto se devuelve en su totalidad.

1

Para aclarar las demás respuestas, OBTENDRÁ DIFERENTES RESULTADOS de acuerdo con la combinación que elija, cuando las columnas a las que se une contengan valores nulos, por ejemplo.

Por lo tanto, para cada escenario de la vida real hay una combinación que le conviene (o desea las líneas sin los datos o no en el ejemplo de valores nulos).

0

Mi respuesta supone 2 mesas se unieron en una sola tecla:

  • INNER JOIN - obtener los resultados que se encuentran en tanto unir tablas (según la regla de combinación)
  • FULL OUTER JOIN - obtener todos los resultados tanto de mesa (producto cartesiano)
  • LEFT OUTER JOIN - obtener todos los resultados de la tabla de la izquierda y los resultados coincidentes desde la derecha

Puede agregar WHERE cláusulas para restringir aún más los resultados.

Utilice esto para obtener solo lo que desea obtener.

Cuestiones relacionadas