2016-05-23 48 views
0

一組項目的(忘了「流派」雖然):表A中選擇行是路口基於<a href="https://upload.wikimedia.org/wikipedia/commons/d/d7/Mapping_table_concept.png" rel="nofollow noreferrer">this image</a>所有從表B中

我有演員的名單,並需要檢索影片列表其中包含演員在我的名單上。

實施例的數據:

INSERT INTO actor (actor_id, name) VALUES 
    (1, "Alice"), (2, "Bob"); 

INSERT INTO film (film_id, title) VALUES 
    (1, "Star Wars"), (2, "The Matrix"), (3, "Lion King); 

INSERT INTO actor_film_mapping (actor_id, film_id) VALUES 
    (1, 1), 
    (1, 2), (2, 2), 
    (2, 3); 

尋找例如包含Alice和Bob影片名單應該給我唯一的矩陣

我來最接近的是this query其選擇與我的演員名單中的任何電影,而不是所有的。

在StackOverflow上尋找類似的答案,我得到了this,它在MSSQL中工作正常,但不是MySQL。

希望我已經說過這個問題確定。我是新來的StackOverflow

回答

0

你很親密。除了使用select distinct,採用having做一個彙總和計算匹配的數量:

SELECT f.* 
FROM film f INNER JOIN 
    actor_film_mapping afm 
    ON f.film_id = afm.film_id 
WHERE afm.actor_id IN (1, 2) 
GROUP BY f.film_id 
HAVING COUNT(*) = 2; 
+0

看起來不錯!因此,如果我要更改列表(或者在我的情況下以編程方式生成),我是否需要將COUNT更改爲列表的長度? – lbrentcarpenter

+0

很好的答案。我仍然是一個新的SQL。我想知道我的sql語句是否可以工作:'SELECT film_id,COUNT(film_id)as actor_count FROM actor_film_mapping GROUP BY film_id WHERE actor_count =(SELECT COUNT(actor_id)FROM actor);'''''''''''''''''''發佈答案。 – Webeng

相關問題