SQL

Cómo usar la cláusula LEFT JOIN de SQL Server para consultar datos de dos tablas

Estrada Web Group
jiestrada
Cómo usar la cláusula LEFT JOIN de SQL Server para consultar datos de dos tablas

Resumen: en este tutorial, aprenderás sobre la cláusula LEFT JOIN de SQL Server y cómo usarla para consultar datos de varias tablas.

Introducción a la cláusula LEFT JOIN de SQL Server

La cláusula LEFT JOIN te permite consultar datos de varias tablas. Devuelve todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. Si no se encuentran filas coincidentes en la tabla de la derecha, se utilizan NULL, otras cláusulas que puedes utilizar para hacer combinaciones entre tablas son INNER JOIN y RIGHT JOIN.

A continuación, se ilustra cómo unir dos tablas T1 y T2 mediante la cláusula LEFT JOIN:

SELECT
    select_list
FROM
    T1
LEFT JOIN T2 ON
    join_predicate;

En esta sintaxis, T1 y T2 son las tablas izquierda y derecha respectivamente.

Para cada fila de la tabla T1, la consulta la compara con todas las filas de la tabla T2. Si un par de filas hace que el predicado de combinación se evalúe como VERDADERO, los valores de columna de estas filas se combinarán para formar una nueva fila que luego se incluirá en el conjunto de resultados.

Si una fila de la tabla de la izquierda (T1) no tiene ninguna fila coincidente de la tabla T2, la consulta combina los valores de columna de la fila de la tabla de la izquierda con NULL para los valores de cada columna de la tabla de la derecha.

En resumen, la cláusula LEFT JOIN devuelve todas las filas de la tabla izquierda (T1) y las filas coincidentes o valores NULL de la tabla derecha (T2).

A continuación, se ilustra la LEFT JOIN de dos tablas T1 (1, 2, 3) y T2 (A, B, C). LEFT JOIN hará coincidir las filas de la tabla T1 con las filas de la tabla T2 usando patrones:

LEFT JOIN de SQL Server

En esta ilustración, ninguna fila de la tabla T2 coincide con la fila 1 de la tabla T1, por lo tanto, se utiliza NULL. Las filas 2 y 3 de la tabla T1 coinciden con las filas A y B de la tabla T2, respectivamente.

Ejemplo de LEFT JOIN de SQL Server

Consulta las siguientes tablas de productos y order_items de la base de datos de pruebas:

declaración usa la cláusula LEFT JOIN

Cada order_items de venta incluye un producto. El enlace entre order_items y las tablas de productos es la columna product_id.

La siguiente declaración usa la cláusula LEFT JOIN para consultar datos de las tablas products y order_items:

SELECT
    product_name,
    order_id
FROM
    production.products p
LEFT JOIN sales.order_items o ON o.product_id = p.product_id
ORDER BY
    order_id;

Resultado:

SQL Server procesa la cláusula WHERE después de la cláusula LEFT JOIN

Como puedes ver claramente en el conjunto de resultados, una lista de NULL y IS NULL en la columna order_id indica que los productos correspondientes aún no se han vendido a ningún cliente.

Es posible utilizar la cláusula WHERE para limitar el conjunto de resultados. La siguiente consulta devuelve los productos que no aparecen en ningún pedido de cliente:

SELECT
    product_name,
    order_id
FROM
    production.products p
LEFT JOIN sales.order_items o ON o.product_id = p.product_id
WHERE order_id IS NULL
ORDER BY
    order_id;

Resultado:

utilizando las cláusulas LEFT JOIN

Como siempre, SQL Server procesa la cláusula WHERE después de la cláusula LEFT JOIN.

El siguiente ejemplo muestra cómo unir tres tablas: production.products, sales.orders y sales.order_items utilizando las cláusulas LEFT JOIN:

SQL Server LEFT JOIN

SELECT
    p.product_name,
    o.order_id,
    i.item_id,
    o.order_date
FROM
    production.products p
	LEFT JOIN sales.order_items i
		ON i.product_id = p.product_id
	LEFT JOIN sales.orders o
		ON o.order_id = i.order_id
ORDER BY
    order_id;

Resultado:

LEFT JOIN DE SQL Server

SQL Server LEFT JOIN: condiciones en la cláusula ON contra WHERE

La siguiente consulta busca los productos que pertenecen al ID 100:

SELECT
    product_name,
    order_id
FROM
    production.products p
LEFT JOIN sales.order_items o
   ON o.product_id = p.product_id
WHERE order_id = 100
ORDER BY
    order_id;

Resultado:

cláusula INNER JOIN

Movamos la condición order_id = 100 a la cláusula ON:

SELECT
    p.product_id,
    product_name,
    order_id
FROM
    production.products p
    LEFT JOIN sales.order_items o
         ON o.product_id = p.product_id AND
            o.order_id = 100
ORDER BY
    order_id DESC;

Resultado:

LEFT JOIN

La consulta devolvió todos los productos, pero solo el pedido con id 100 tiene la información del producto asociado.

Ten en cuenta que para la cláusula INNER JOIN, la condición en la cláusula ON es funcionalmente equivalente si se coloca en la cláusula WHERE.

En este tutorial, has aprendido a utilizar la cláusula LEFT JOIN de SQL Server para recuperar datos de varias tablas relacionadas.

Compartir artículo:

Más artículos geniales

Qué es un trigger o desencadenador y cómo crearlo?

Qué es un trigger o desencadenador y cómo crearlo?

En este artículo veremos ¿qué es un trigger? es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos.

Ver artículo completo
¿Cómo convertir una cadena de texto a fecha y hora en SQL?

¿Cómo convertir una cadena de texto a fecha y hora en SQL?

En este artículo te mostraré cómo convertir un campo de texto a fecha y hora, el campo se encuentra en formato de cadena (varchar, nvarchar, etc.) y lo convertiremos a en un tipo DateTime de SQL.

Ver artículo completo
Introducción al curso gratuito de SQL Server

Introducción al curso gratuito de SQL Server

SQL es un lenguaje de consulta estructurado de base de datos normalizado, utilizado por algunos motores de base de datos DB2, SQL Server, Oracle, MySql, Sybase, PostgreSQL, entre otros.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;