次の属性を持つ次の4つのテーブルがあります。
Actor:actor_id,firstname,lastname
film_actor:actor_id,film_id
film_category:film_id,category_id
category:category_id,name
映画で働いているすべての俳優のリスト、それらの film_id、category_id、およびカテゴリ名を見つけたいと考えています。
次のクエリに In 句を使用したい。だから私は次のようにこれを実装することでo/pを取得しています:
select a.first_name,a.actor_id,fc.film_id,c.name,c.category_id
from actor a,film_actor fa,film_category fc,category c where a.actor_id
in (select fa.film_id from film_actor fa where fa.actor_id=a.actor_id
and fa.film_id
in (select fc.film_id from film_category fc where fc.film_id=fa.film_id
and fc.category_id
in(select fc.category_id from category c where c.category_id=fc.category_id)))
しかし、今、特定の category_id のアクターのリストを知りたいとします。存在する 5 としましょう。そこで、次の変更を行います。
select a.first_name,a.actor_id,fc.film_id,c.name,c.category_id
from actor a,film_actor fa,film_category fc,category c
where a.actor_id in
(select fa.film_id from film_actor fa where fa.actor_id=a.actor_id
and fa.film_id
in (select fc.film_id from film_category fc where fc.film_id=fa.film_id
and fc.category_id
in(select fc.category_id from category c where c.category_id=fc.category_id
and category_id=5)))
空の結果が得られます。また、最後に IN 句を使用する必要がある場合と使用しない場合はいつですか?