Creando vistas en mysql

Categorías, películas y actores:

create view pelistotal as
select category_id, category.name nombrecategoria,
film_id,title,actor_id,
first_name,last_name 
from category join film_category using (category_id)
join film using (film_id)
join film_actor using (film_id)
join actor using (actor_id)

La usamos como una tabla normal:

select name,count(actor_id) total 
from pelistotal 
group by category_id
select * from actor 
where actor_id not in (
SELECT actor_id FROM pelistotal where name='action');

Como hacer una consulta del tipo actores que no han trabajado en películas de acción si usar subconsultas. Primero creamos la vista en positivo:

create view actores_accion as 
select actor_id,first_name,last_name from 
category join film_category using (category_id)
join film using (film_id)
join film_actor using (film_id)
join actor using (actor_id) 
where name='action'

Y después hacemos un left join y buscamos los nulos:

SELECT * FROM actor left join actores_accion using(actor_id)
where actores_accion.first_name is null

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos