JOIN
La cláusula JOIN
en SQL se utiliza para combinar registros de dos o más tablas en función de una condición específica. Aquí hay algunos ejemplos comunes de cómo usar JOIN
:
-
Inner Join:
- Combina registros de ambas tablas solo cuando la condición especificada se cumple.
SELECT Empleados.Nombre, Departamentos.Nombre as Departamento FROM Empleados INNER JOIN Departamentos ON Empleados.DepartamentoID = Departamentos.ID;
-
Left Join (o Left Outer Join):
- Devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha. Si no hay coincidencias, se devuelven valores nulos.
SELECT Clientes.Nombre, Pedidos.Producto FROM Clientes LEFT JOIN Pedidos ON Clientes.ID = Pedidos.ClienteID;
-
Right Join (o Right Outer Join):
- Devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda. Si no hay coincidencias, se devuelven valores nulos.
SELECT Clientes.Nombre, Pedidos.Producto FROM Clientes RIGHT JOIN Pedidos ON Clientes.ID = Pedidos.ClienteID;
-
Full Join (o Full Outer Join):
- Devuelve todos los registros cuando hay una coincidencia en una de las tablas. Si no hay coincidencias, se devuelven valores nulos en las columnas de la tabla sin coincidencia.
SELECT Clientes.Nombre, Pedidos.Producto FROM Clientes FULL JOIN Pedidos ON Clientes.ID = Pedidos.ClienteID;
Estos son solo ejemplos básicos, y la efectividad de la elección del tipo de JOIN
dependerá de la estructura y los datos específicos de tu base de datos. Asegúrate de tener índices en las columnas que estás utilizando para unir, especialmente si estás trabajando con grandes conjuntos de datos.
La base de datos de ejemplo "Sakila" es una base de datos de muestra que representa un sistema de alquiler de películas. Aquí tienes un ejemplo de múltiples JOIN
en la base de datos Sakila:
Supongamos que queremos obtener información sobre los clientes, los alquileres, las películas y los pagos. Podemos utilizar varios JOIN
para combinar la información de estas tablas:
SELECT
clientes.customer_id,
clientes.first_name,
clientes.last_name,
alquileres.rental_id,
alquileres.rental_date,
peliculas.title,
pagos.amount
FROM
customer AS clientes
JOIN
rental AS alquileres ON clientes.customer_id = alquileres.customer_id
JOIN
inventory AS inventario ON alquileres.inventory_id = inventario.inventory_id
JOIN
film AS peliculas ON inventario.film_id = peliculas.film_id
LEFT JOIN
payment AS pagos ON alquileres.rental_id = pagos.rental_id
ORDER BY
clientes.customer_id, alquileres.rental_date;
Este ejemplo utiliza varios JOIN
para conectar la información de las tablas customer
, rental
, inventory
, film
y payment
. También se utiliza LEFT JOIN
para incluir los alquileres que no tienen pagos asociados. Este tipo de consulta puede proporcionar información detallada sobre los clientes, los alquileres, las películas y los pagos en un único conjunto de resultados. Asegúrate de entender la estructura de las tablas y las relaciones en la base de datos Sakila para adaptar las consultas según tus necesidades específicas.
Obtener información sobre actores y sus películas:
SELECT
actors.actor_id,
actors.first_name,
actors.last_name,
film.title
FROM
actor AS actors
JOIN
film_actor ON actors.actor_id = film_actor.actor_id
JOIN
film ON film_actor.film_id = film.film_id
ORDER BY
actors.last_name, actors.first_name;