-- Consultas de división -- Son consultas en las que tenemos que buscar información -- en 'negativo'. Es decir, registros de una tabla que no -- tengan relación con registros de otra tabla -- ¿Hay algún actor que no haya trabajado en películas de comedia? -- La consulta siguiente NO nos responde la pregunta -- Nos dice los actores que han trabajado en películas que no son comedia select first_name,last_name,name from actor join film_actor using(actor_id) join film using(film_id) join film_category using(film_id) join category using(category_id) order by actor.actor_id; -- where name<>'comedy'; -- ¿Cual es el enfoque correcto? -- Darle la vuelta a la pregunta -- QUé actores sí que han trabajado en comedia select first_name,last_name,name from actor join film_actor using(actor_id) join film using(film_id) join film_category using(film_id) join category using(category_id) where name='comedy'; -- Uso la consulta como subconsulta y digo todos los actores que no están -- en la consulta anterior select * from actor where actor_id not in (select actor_id from actor join film_actor using(actor_id) join film using(film_id) join film_category using(film_id) join category using(category_id) where name='comedy'); -- ¿Hay actores que no han trabajado en películas de rating 'R' -- Esta consulta, igual que antes, no nos responde la pregunta -- Nos dice qué actores han trabajado en películas que no son de rating 'R' -- Eso no es lo que nos están preguntando select * from actor join film_actor using(actor_id) join film using(film_id) where rating<>'R'; -- Le damos la vuelta a la pregunta ¿Qué actores SÍ que han trabajado -- en películas de rating 'R' select * from actor join film_actor using(actor_id) join film using(film_id) where rating='R'; -- Una vez yo sé qué actores han trabajado en películas de rating R -- Los descarto, esos no select * from actor where actor_id not in ( select actor_id from actor join film_actor using(actor_id) join film using(film_id) where rating='R' );