给定多个表我尝试编写一个返回满足特定count子句的名称的查询。
我有桌子:
genre(genre, movieid)
moviedirectors(movieid, directorid)
directors(directorid, firstname, lastname)
我想写一个查询,返回导演至少50部类型喜剧电影的导演的名字和姓氏,并返回该数字。
这就是我所拥有的
select d.fname, d.lname, count(*)
from genre g, directors d, moviedirectors md
where g.genre='Comedy' and g.movieid=md.movieid and
md.directorid=d.directorid
group by d.id
having count(*) >= 50
我相信这应该是正确的,但是当我在命令行上运行此查询时,它永远不会完成。我等了30分钟,没有结果。
答案 0 :(得分:0)
你需要内部联接:
SELECT d.fname
d.lname
FROM genre g
INNER JOIN moviedirectors md
ON g.movieid = md.movieid
INNER JOIN directors d
ON md.directorid = d.directorid
WHERE g.genre = 'Comedy'
GROUP BY d.fname, -- group by columns in select
d.lname
HAVING COUNT(*) >= 50
答案 1 :(得分:0)
选择c.firstname,c.lastname,count(e.movieid)from(选择a。*来自导演a,电影b,其中b.genre ='喜剧'和b.movieid = a。 movieid)d,director c其中c.directorid = d.directorid group by e.movieid有count(e.movieid)> 50;