2017-04-11 4 views
0

が、これは私のテーブルであるとしましょう:mysqlに2人の俳優を持つ映画のタイトルを見つける方法は?

************ 
* film  * 
************  
* title * 
* film_id * 
************ 

************  
* actors * 
************ 
* film_id * 
* actor_id * 
************ 

私は2人の俳優は、クエリを作成する方法actor_id = 22 and actor_id = 23 を参加する映画のタイトルを検索したいですか?

私が試した:

SELECT title 
FROM film 
WHERE film_id IN(
    SELECT film_id, COUNT(*) 
    FROM actors 
    WHERE actor_id=22 OR actor_id=23 
    GROUP BY film_id) 

答えて

0

私は次のクエリは、あなたのためにそれを作るべきだと考えています。

SELECT title 
FROM film f, actors a1, actors a2 
WHERE f.film_id=a1.film_id AND a1.actor_id=22 
     AND f.film_id=a2.film_id AND a2.actor_id=23; 

ジョインも、それを処理するためのより良い方法です:

SELECT title 
FROM film f 
JOIN actors a1 ON f.film_id = a1.film_id 
JOIN actors a2 ON f.film_id = a2.film_id 
WHERE a1.actor_id = 22 
     AND a2.actor_id = 23; 
0

あなたは内側の二回の俳優のテーブルに参加し、各基準はそれがために、両方の役者が必要になります参加するように、個々のactor_idを設定した場合映画の中で。結果として、あなたは両方の俳優を持っている映画だけを返します。

SELECT film.title 
FROM film 
INNER JOIN actors actors1 
    ON film.film_id = actors1.film_id 
    AND actors1.actor_id=22 
INNER JOIN actors actors2 
    ON film.film_id = actors2.film_id 
    AND actors2.actor_id=23 
GROUP BY film.title 
関連する問題