老实说,这是一个家庭作业问题,但我已经浪费了几个小时,只是无法正确解决。它返回错误数量的结果或错误的数据:
我需要选择参与指导电影和/或在电影中表演的每个人以及他们所做的次数,如果至少 5 次。
有一个acts
带有 amovie_id
和 a的表person_id
,directs
带有movie_id
andperson_id
和person
( pid
and name
)。
我想出的是:
SELECT p.name,count(d.mid)+count(a.mid)
FROM person p
INNER JOIN acts a
ON a.pid=p.pid
LEFT JOIN directs d
ON p.pid=d.pid
group by p.pid,p.name
having (count(d.mid) +count(a.mid))>=5
基本上,我试图在两个表中加入person
和directs
匹配的person_id
表,同时对directs
. 问题是第二个查询的结果不包括在内(有 10 部电影的 Alfred Hitchcock 从一开始就一直困扰着我)。
我正在使用 sqlite,如果有人可以推动我朝着正确的方向前进,我会非常高兴。我还被指示避免聚合子查询。我有一个使用它们的解决方案,但执行需要 15 分钟。