Ejemplos JOIN

-- La sintaxis es tabla1 JOIN tabla2 ON tabla1.id=tabla2.id

-- Un join de una relación 1 a N
select country,city from country JOIN city ON country.country_id=city.country_id;

-- Esta sintaxis no es standard del sql, solo sirve para mysql si
-- el nombre del id es igual en las dos tablas
select country,city from country JOIN city using(country_id);

-- Un join de una relación N a N
select name,title from category join film_category 
on category.category_id = film_category.category_id
join film on film_category.film_id=film.film_id;

-- Sintaxis alternativa
select name,title from category join film_category 
using(category_id) join film using(film_id);

-- Quiero ver los clientes de Spain
select * from country join city on country.country_id=city.country_id
join address on city.city_id=address.city_id
join customer on address.address_id=customer.address_id
where country='spain';

-- Alternativa
select * from country join city using(country_id)
join address using(city_id)
join customer using(address_id)
where country='spain';

-- ¿En qué películas ha trabajado el actor de id 1?

select first_name,last_name,title from actor join film_actor on actor.actor_id=film_actor.actor_id
join film on film_actor.film_id=film.film_id
where actor.actor_id=1
order by title desc;

select first_name,last_name,title from film join film_actor on film.film_id=film_actor.film_id
join actor on film_actor.actor_id=actor.actor_id
where actor.actor_id=1;

-- Que actores han trabajado en películas de la categoría 'Comedy'
-- Uso DISTINCT para evitar que salgan valores repetidos
-- Si un actor ha trabajado en varias películas saldrá varias veces
-- En order by ordeno por dos campos, first_name y last_name
-- Para que si el nombre sea el mismo en diferentes actores
-- Se ordene por el apellido
select distinct name,first_name, last_name from category join film_category on category.category_id=film_category.category_id
join film on film_category.film_id=film.film_id
join film_actor on film.film_id=film_actor.film_id
join actor on film_actor.actor_id=actor.actor_id
where name='comedy'
order by first_name, last_name;

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos