【问题标题】:CodeWars SQL Challenge - Relational division: Find all movies two actors cast in togetherCodeWars SQL 挑战 - 关系除法:查找两个演员一起出演的所有电影
【发布时间】:2017-05-10 14:38:55
【问题描述】:

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

挑战: 给定 DVD 租赁示例数据库中的 film_actor 和 film 表,找到所有同时出演的 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;

【问题讨论】:

  • 请不要让您的问题依赖于外部资源;它应该是自包含的。说明您的问题是什么,遇到了什么问题,以及您为解决这些问题所做的工作。
  • 您可以找到所有播放过“Crowe”或“Nolte”(或两者)的电影,而不仅仅是那些播放过的电影。

标签: sql database relational-database


【解决方案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;

【讨论】:

  • "回复true? 或您的意思可能是be truebe_truthy 预期为true"
  • 那是ruby error,不是 SQL
【解决方案2】:

由于您使用的是 c.lastName IN('Crowe', 'Nolte') ,因此您正在展示这两部电影的所有电影,但问题是这两位演员都必须是该电影的一部分,因此您需要使用 c1.lastName=('Crowe') 和 c2.lastName=('Nolte)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2015-06-25
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2020-08-03
    • 2020-11-22
    相关资源
    最近更新 更多