Principales tipos de JOINS en SQL

***********
  1. INNER JOIN: Devuelve todas las filas cuando hay al menos una coincidencia en ambas tablas.
  2. LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda, y las filas coincidentes de la tabla de la derecha.
  3. RIGHT JOIN: Devuelve todas las filas de la tabla de la derecha, y las filas coincidentes de la tabla de la izquierda.
***********

1. INNER JOIN

INNER JOIN selecciona todas las filas de las dos columnas siempre y cuando haya una coincidencia entre las columnas en ambas tablas. Es el tipo de JOIN más común.
SELECT Clientes.NombreCliente, Pedidos.PedidoID FROM Clientes
INNER JOIN Pedidos ON Clientes.ClienteID=Pedidos.ClienteID
ORDER BY Clientes.NombreCliente;
Si hay filas en Clientes que no tienen coincidencias en Pedidos, los Clientes no se mostrarán.
NombreClientePedidoID
Ebbe Therese236
Lydia Roderic235
Sofie Mariona234
Sofie Mariona237
Sofie Mariona aparece dos veces ya que ha realizado dos pedidos. No aparece Marco Lambert, pues no ha realizado ningún pedido.
***********

2. LEFT JOIN

LEFT JOIN mantiene todas las filas de la tabla izquierda (la 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.
SELECT Clientes.NombreCliente, Pedidos.PedidoID
FROM Clientes LEFT JOIN Pedidos
ON Clientes.ClienteID=Pedidos.ClienteID
ORDER BY Clientes.NombreCliente;
La sentencia anterior devolverá lo siguiente:
NombreClientePedidoID
Ebbe Therese236
Lydia Roderic235
Marco Lambert(null)
Sofie Mariona234
Sofie Mariona237
***********

3. RIGHT JOIN

Es igual que LEFT JOIN pero al revés. Ahora se mantienen todas las filas de la tabla derecha (tabla2). Las filas de la tabla izquierda se mostrarán si hay una coincidencia con las de la derecha. Si existen valores en la tabla derecha pero no en la tabla izquierda, ésta se mostrará null.
SELECT Pedidos.PedidoID, Clientes.NombreCliente
FROM Clientes RIGHT JOIN Pedidos
ON Clientes.ClienteID=Pedidos.ClienteID
ORDER BY Pedidos.PedidoID;
Ahora van a aparecer todos los pedidos, y los nombres de los clientes que han realizado un pedido. Nótese que también se ha cambiado el orden, y se han ordenado los datos por PedidoID.
PedidoIDNombreCliente
234Sofie Mariona
235Lydia Roderic
236Ebbe Therese
237Sofie Mariona
***********

otro ejemplo usando una misma tabla Category para listar la cateroria y su padre, referenciado en el campo category_id

con inner join

select cate.name as categoria, catePadre.name as categoria_padre 
from category cate, category catePadre
where cate.category_id=catePAdre.id;




categoria categoria_padre
bolsones de tierra bolsones
fideos comestibles
caldos y sopas comestibles

con left join
select cate.name as categoria, catePadre.name as categoria_padre 
from category cate left join category catePadre
on cate.category_id=catePAdre.id


categoria categoria_padre
bolsones null
Artículos de librería null
dulces y mermeladas null
bolsones de tierra bolsones
comestibles null
fideos comestibles
caldos y sopas comestibles

con right join

select cate.name as categoria, catePadre.name as categoria_padre 
from category cate right join category catePadre
on cate.category_id=catePAdre.id



categoria categoria_padre
bolsones de tierra bolsones
null Artículos de librería
null dulces y mermeladas
null bolsones de tierra
fideos comestibles
caldos y sopas comestibles
null fideos
null caldos y sopas

No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable