Kaleb:
私は2人の俳優が特定のフィルムで一緒にされているフィルムリストを見つけようとしています。使用する正しいクエリは以下の通りであります
select f.title from film f
INNER JOIN film_actor fa1 ON f.film_id = fa1.film_id
INNER JOIN film_actor fa2 ON f.film_id = fa2.film_id
INNER JOIN actor a1 ON a1.actor_id = fa1.actor_id
INNER JOIN actor a2 ON a2.actor_id = fa2.actor_id
where
(a1.first_name = 'CATE' and a1.last_name = 'MCQUEEN')
and
(a2.first_name = 'CUBA' and a2.last_name = 'BIRCH')
そして、以下の方法は、任意の結果を返しません。
select f.title from film f
INNER JOIN film_actor fa ON f.film_id = fa.film_id
INNER JOIN actor a1 ON a1.actor_id = fa.actor_id
INNER JOIN actor a2 ON a2.actor_id = fa.actor_id
where
(a1.first_name = 'CATE' and a1.last_name = 'MCQUEEN')
and
(a2.first_name = 'CUBA' and a2.last_name = 'BIRCH')
;
誰かの助けが私は理由を理解することはできますか?
jeprubio:
実行して、2番目のクエリには:
INNER JOIN actor a1 ON a1.actor_id = fa.actor_id
INNER JOIN actor a2 ON a2.actor_id = fa.actor_id
それらはの値で同じIDを持つように俳優のA1及びA2は同じでなければなりませんfa.actor_id
。
だから、それから、この俳優も持っている必要があります。
first_name = 'CATE' and last_name = 'MCQUEEN'
and
first_name = 'CUBA' and last_name = 'BIRCH'
同時に。これは起こることができません。
あなたがそのA1、A2は異なる場合がありますので、film_actorテーブルで二回、それに参加する必要がある理由です。