En este tutorial, se proporcionará una introducción a la cláusula LEFT JOIN de SQL y se ofrecerán ejemplos para ilustrar cómo funciona. También se brindará una guía paso a paso para implementar una cláusula LEFT JOIN en una base de datos SQL Server o MySQL.
Por lo que te recomiendo ver este articulo completo para aprender las bondades de usar left join en vez de where not in!!!
Diferencia entre el left outer join y left join
«Left join» y «left outer join» son términos que se usan indistintamente y suelen referirse al mismo tipo de operación en la base de datos. En ambos casos, la consulta devuelve todos los registros de la tabla izquierda (la tabla que aparece antes de la palabra clave «left join» o «left outer join» en la consulta), y los registros coincidentes de la tabla derecha (la tabla que aparece después de la palabra clave).
La diferencia entre ambos términos radica en que el «left outer join» es más explícito en términos de la lógica de la consulta, ya que indica que se desea incluir todos los registros de la tabla izquierda incluso si no hay registros coincidentes en la tabla derecha. Es decir, si hay registros en la tabla izquierda que no tienen coincidencias en la tabla derecha, estos registros también se incluirán en el resultado de la consulta.
asi mismo esto aplica para el right outer join y el Right join en escencia son una forma abreviada de la clausula.
Sintaxis del left join
La sintaxis de LEFT OUTER JOIN
en PostgreSQL a diferencia de sql sever y MySQL es similar, aunque hay algunas pequeñas diferencias.
En PostgreSQL, la sintaxis es la siguiente:
SELECT
compos
FROM t1
LEFT outer JOIN t2 ON join_condition1
Mientras que para motores de base de datos como son Sql Server y Mysql server seria la siguiente:
SELECT
compos
FROM t1
LEFT JOIN t2 ON join_condition1
Como utilizar el comando INNER JOIN en SQL
- Primero, especifique la tabla principal que aparece en la cláusula FROM (t1).
- En segundo lugar, especifique las tablas que con la cual se desea validar la relacion la tabla principal, que aparece en la cláusula LEFT JOIN (t2).
- Debe indicar los criterios de la relación después de la palabra clave ON de la cláusula LEFT JOIN. La condición especifica la regla para hacer coincidir los registros entre las tablas entre la tablas.
Diferencias entres motores de base de datos
En general, la sintaxis y el comportamiento de la cláusula «left join» o «Right join» en MySQL, SQL Server y PostgreSQL son bastante similares. Sin embargo, existen algunas diferencias sutiles en la forma en que cada motor de base de datos implementa esta operación:
- En MySQL, la cláusula «left join» o «Right join» se utiliza para combinar dos tablas y recuperar todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. También se puede usar «left outer join» para lograr el mismo resultado. Es importante tener en cuenta que, en versiones antiguas de MySQL, la palabra clave «outer» no era necesaria y se podía omitir.
- En SQL Server, la sintaxis de la cláusula «left join» o «Right join» es similar a la de MySQL, y también se puede usar «left outer join» para obtener el mismo resultado. Además, SQL Server admite el uso de la cláusula «full outer join», que combina todas las filas de ambas tablas, incluyendo las que no tienen coincidencias en la otra tabla.
- En PostgreSQL, la sintaxis de la cláusula «left join» o «Right join» es similar a la de MySQL y SQL Server, y también se puede usar «left outer join» para obtener el mismo resultado. Sin embargo, PostgreSQL ofrece una funcionalidad adicional en la cláusula «join» que permite especificar condiciones adicionales en la cláusula «on», lo que puede ser útil para filtrar los resultados de la unión.
MySQL, SQL Server y PostgreSQL tienen la opción de utilizar RIGHT OUTER JOIN
para obtener todas las filas de la tabla de la derecha (tabla2 en el ejemplo) y solo las filas de la tabla de la izquierda (tabla1 en el ejemplo) que coinciden con ellas. La sintaxis es similar a la del LEFT OUTER JOIN
, pero se utiliza la palabra clave RIGHT OUTER JOIN
o RIGHT JOIN
en lugar de LEFT OUTER JOIN
o LEFT JOIN
.
LEFT JOIN en SQL Server y Mysql
La cláusula LEFT JOIN de SQL se utiliza para validar que exista una relación entre las tablas involucradas. LEFT JOIN mantiene todas las filas de la tabla izquierda (tabla1). Las filas de la tabla derecha se mostrarán si hay una coincidencia con las de la izquierda. Si existen valores en la tabla izquierda pero no en la tabla derecha, ésta mostrará Null.
Para los fines te mostraremos como relacionar dos tablas producto y categoría del producto.
SELECT PRODUCTO.*,CATEGORIA.Name AS CATEGORIA
FROM [AventureWorks].[SalesLT].[Product] AS PRODUCTO
LEFT JOIN [AventureWorks].[SalesLT].ProductCategory AS CATEGORIA
ON
PRODUCTO.ProductCategoryID =CATEGORIA.ProductCategoryID
En este caso las solicitud mostrara todos los valores que estén o no dentro de la condición de definida en el LEFT JOIN los valores no que no se encuentren solo marcaran un NULL en el campo categoría.
LEFT JOIN en SQL con la clausula WHERE
Para este ejemplo solo aplicaremos lo ya aprendido en el tutorial de inner join en este caso al usar la clausula WHERE indicamos el valor de la columna dentro de la relacion join que se encontrara en nulo indicando que esta fuera de la condicion JOIN.
SELECT PRODUCTO
.*,CATEGORIA.Name AS CATEGORIA
WHERE CATEGORIA.ProductCategoryID IS NULL
FROM [AventureWorks].[SalesLT].[Product] AS PRODUCTO
LEFT JOIN [AventureWorks].[SalesLT].ProductCategory AS CATEGORIA
ON
PRODUCTO.ProductCategoryID =CATEGORIA.ProductCategoryID
LEFT JOIN mantiene todas las filas de la tabla izquierda (la tabla1). por lo cual solo mostrara las filas de la izquierda que no están relacionadas con la derecha.
LEFT JOIN vs RIGHT JOIN en SQL
Mientras que el LEFT JOIN mantiene todas las filas de la tabla izquierda el RIGHT JOIN mantiene todas las filas de la tabla DERECHA indicando que debemos evaluar cuales registros de la izquierda no estan relacionados con los de la derecha.
la sintaxis es la misma que la del LEFT outer JOIN , solo sustituyes LEFT por RIGHT
SELECT
campos
FROM t1
RIGHT JOIN t2 ON join_condition1
Como usar el Left join en postgresql
en PostgreSQL existen algunas opciones adicionales que pueden ser útiles al utilizar LEFT OUTER JOIN
. Algunas de las opciones son:
USING
: Esta opción se utiliza para especificar la columna en la que se unen las tablas. En lugar de utilizar la cláusulaON
, se puede utilizar la cláusulaUSING
para especificar la columna en común entre las dos tablas. Por ejemplo:
SELECT columnas
FROM tabla1
LEFT OUTER JOIN tabla2 USING (columna);
ON CONFLICT
: Esta opción se utiliza para especificar cómo manejar los conflictos que pueden ocurrir al insertar datos en una tabla. Por ejemplo, si se está uniendo una tabla de pedidos con una tabla de clientes, puede ocurrir que un cliente tenga múltiples pedidos, lo que puede provocar un conflicto al insertar datos en la tabla de resultados. En este caso, se puede utilizar la cláusulaON CONFLICT
para especificar cómo manejar el conflicto. Por ejemplo:
SELECT columnas FROM tabla1 LEFT OUTER JOIN
tabla2 ON tabla1.columna = tabla2.columna ON CONFLICT (columna) DO NOTHING;
Estas opciones adicionales no están disponibles en MySQL, por lo que si necesita utilizarlas, es posible que deba ajustar su consulta de acuerdo con las capacidades de MySQL.
En conclusion
En resumen, La cláusula LEFT JOIN de SQL se utiliza para validar que exista una relación entre las tablas involucradas se puede combinar con Group by, where , having y order by. ademas, es posible combinar con un subquery. Esta es una poderosa herramienta para comparar información entre tablas en base de datos.
Hasta la próxima !!
Bye :D!!