CodeWars SQL挑战 - 关系部门:查找两个演员一起投射的所有电影

时间:2016-12-26 02:55:47

标签: sql database relational-database

有人可以告诉我为什么我的解决方案不适用于此SQL challenge吗?基本上,正确的解决方案应该返回4行,我的返回148行。

挑战: 鉴于DVD Rental样本数据库中的film_actor和电影表,找到所有电影,Sidney Crowe(actor_id = 105)和Salma Nolte(actor_id = 122)一起投射并按字母顺序排列结果集。

解决方案:

SELECT DISTINCT f.title
FROM film f
INNER JOIN film_actor a ON
f.film_id=a.film_id
INNER JOIN actor c ON
a.actor_id=c.actor_id
WHERE c.last_name IN ('Crowe', 'Nolte')
GROUP BY f.title;

2 个答案:

答案 0 :(得分:1)

我认为已经给出了演员ID。此外,你必须两次加入film_actors。

Select f.title
From film f
Inner join film_actor a1
On f.film_id = a1.film_id
Inner join film_actor a2
On f.film_id = a2.film_id
Where a1.actor_id = 105
And a2.actor_id = 122
Order by f.title;

答案 1 :(得分:0)

因为你正在使用c.lastName IN(' Crowe',' Nolte')你正在展示这两部作为其中一部分的所有电影,但问题是这些演员必须是这部电影的一部分,所以你需要使用 c1.lastName =(' Crowe')和c2.lastName =(' Nolte)