..


Enlaces patrocinados

Lo contrario de un INNER JOIN o para obtener los registros no coinciden

Artículo escrito por Max Bossi

¿Quién sabe cuáles son los conocimientos de SQL es la unión. En nuestros guías y otros artículos que explican cómo la unión y cómo se pueden crear relaciones entre las diferentes tablas de una base de datos.

El requisito más común es satisfecha por el instrumento de combinación para buscar coincidencias entre dos tablas, en cuyo caso se rescata la cláusula INNER JOIN que localiza con precisión y devuelve los campos que satisfacen la correspondencia buscarse dentro de dos o más tablas relacionadas en la unión.

Mucho menos intuitivo de lo contrario es la necesidad de identificar los campos que no tienen un donante compatible dentro de la unión.

Tomemos un ejemplo.
Supongamos que desea administrar una base de datos de e-commerce se compone de dos tablas:

  • clientes (que contiene los datos maestros del cliente)
  • órdenes (que contiene los pedidos realizados por los clientes)
Ahora bien, supongamos que desea extraer dos listas diferentes de clientes: 1) una lista de clientes que ya han realizado un pedido, 2) la lista de clientes que aún no han comprado nada.

Para satisfacer el requisito primero, por supuesto, es muy sencillo:

 



 SELECCIONAR CUSTOMER.FIRST, Cliente.Ventas







 FROM clientes







 Los pedidos INNER JOIN







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC Cliente.Ventas

 
y hasta ahora no hay problema.

Pero ¿cómo podemos hacer para revertir el resultado? Bueno ... En primer lugar, no utilice una combinación interna, sino un LEFT JOIN para encontrar un partido completo, pero no parcial, donde, sin embargo, los resultados de la tabla izquierda se devuelven todos modos.
Sin que esto vamos a ver (con la cláusula WHERE) los registros que faltan (es decir, que no se encuentran en el informe), entonces identificado como NULL (en el SQL NULL se define como una especie de "valor especial" que identifica la ausencia de valor ..)

Veamos el código:

 



 SELECCIONAR CUSTOMER.FIRST, Cliente.Ventas







 FROM clientes







 LEFT JOIN Pedidos







 ON = clienti.id ordini.id_cliente







 ¿DÓNDE ESTÁ NULL ordini.id_cliente







 ORDER BY ASC Cliente.Ventas

 
El resultado es, de hecho, la lista de nombres de nuestros clientes que nunca han comprado nada.

En la misma categoría ...
E-Learning
MS Access (Avanzado) MS Access (Avanzado)
Aprenda a crear y gestionar bases de datos rápida y fácilmente. A partir de 29 €.
MySQL (Curso) MySQL (Curso)
Gestión de base de datos de código abierto. A partir de 39 €.
SQL y bases de datos (Avanzado) SQL y bases de datos (Curso)
Crear y gestionar bases de datos relacionales. A partir de 39 €.
Enlaces patrocinados