Quisiera aprender a hacer joins en mysql
Fuente: https://chat.deepseek.com
¡Claro! Aprender a hacer JOIN
en MySQL es fundamental para trabajar con bases de datos relacionales. Los JOIN
te permiten combinar filas de dos o más tablas basándote en una relación entre columnas de esas tablas. Aquí te explico los tipos más comunes de JOIN
en MySQL:
1. INNER JOIN
El INNER JOIN
devuelve solo las filas que tienen coincidencias en ambas tablas. Es el tipo de JOIN
más común.
Sintaxis:
SELECT columnas FROM tabla1 INNER JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
2. LEFT JOIN (o LEFT OUTER JOIN)
El LEFT JOIN
devuelve todas las filas de la tabla izquierda (la primera tabla mencionada) y las filas coincidentes de la tabla derecha. Si no hay coincidencias, los resultados de la tabla derecha serán NULL
.
Sintaxis:
SELECT columnas FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
3. RIGHT JOIN (o RIGHT OUTER JOIN)
El RIGHT JOIN
es lo contrario del LEFT JOIN
. Devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Si no hay coincidencias, los resultados de la tabla izquierda serán NULL
.
Sintaxis:
SELECT columnas FROM tabla1 RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Orders.OrderID, Employees.LastName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID;
4. FULL JOIN (o FULL OUTER JOIN)
El FULL JOIN
devuelve todas las filas cuando hay una coincidencia en la tabla izquierda o derecha. MySQL no tiene un FULL JOIN
nativo, pero puedes simularlo usando UNION
entre LEFT JOIN
y RIGHT JOIN
.
Sintaxis (Simulación):
SELECT columnas FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna UNION SELECT columnas FROM tabla1 RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID UNION SELECT Customers.CustomerName, Orders.OrderID FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
5. CROSS JOIN
El CROSS JOIN
devuelve el producto cartesiano de las dos tablas, es decir, todas las combinaciones posibles de filas de ambas tablas.
Sintaxis:
SELECT columnas FROM tabla1 CROSS JOIN tabla2;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers CROSS JOIN Orders;
6. SELF JOIN
Un SELF JOIN
es un JOIN
de una tabla consigo misma. Se utiliza cuando necesitas combinar filas de una tabla con otras filas de la misma tabla.
Sintaxis:
SELECT columnas FROM tabla AS t1 JOIN tabla AS t2 ON t1.columna = t2.columna;
Ejemplo:
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City;
Ejercicios Prácticos
-
INNER JOIN: Intenta obtener una lista de todos los pedidos junto con los nombres de los clientes que los realizaron.
-
LEFT JOIN: Obtén una lista de todos los clientes y sus pedidos, incluyendo aquellos clientes que no han realizado ningún pedido.
-
RIGHT JOIN: Obtén una lista de todos los empleados y los pedidos que han gestionado, incluyendo aquellos empleados que no han gestionado ningún pedido.
-
FULL JOIN: Simula un
FULL JOIN
para obtener una lista de todos los clientes y todos los pedidos, independientemente de si hay coincidencias o no. -
CROSS JOIN: Intenta obtener todas las combinaciones posibles de clientes y pedidos.
-
SELF JOIN: Intenta obtener una lista de clientes que viven en la misma ciudad.
¡Practica estos ejercicios y te sentirás más cómodo con los JOIN
en MySQL!