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

  1. INNER JOIN: Intenta obtener una lista de todos los pedidos junto con los nombres de los clientes que los realizaron.

  2. LEFT JOIN: Obtén una lista de todos los clientes y sus pedidos, incluyendo aquellos clientes que no han realizado ningún pedido.

  3. 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.

  4. 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.

  5. CROSS JOIN: Intenta obtener todas las combinaciones posibles de clientes y pedidos.

  6. 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!