SQL查询返回多个表中特定属性的名称和计数

SQL查询返回多个表中特定属性的名称和计数,sql,sqlite,Sql,Sqlite,给定多个表,我试图编写一个查询,返回满足特定count子句的名称 我有以下表格: genre(genre, movieid) moviedirectors(movieid, directorid) directors(directorid, firstname, lastname) 我想写一个查询,返回至少导演了50部类型喜剧电影的导演的名字和姓氏,并返回这个数字 这就是我所拥有的 select d.fname, d.lname, count(*) from genre g, direc

给定多个表,我试图编写一个查询,返回满足特定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分钟,没有结果

您需要内部联接:

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
您需要内部联接:

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

从选择a中选择c.firstname、c.lastname、counte.movieid。*从导演a中选择,从电影b中选择b.genre=‘喜剧’和b.movieid=a.movieid,从导演c中选择c.directorid=d.directorid,按counte.movieid>50的e.movieid分组

从选择a中选择c.firstname、c.lastname、counte.movieid。*从导演a中选择电影b,其中b.grove='喜剧'和b.movieid=a.movieid,导演c其中c.directorid=d.directorid组由counte.movieid>50的e.movieid组成

你的桌子有多大?请注意,您在SELECT子句中包含了非聚合列,这在大多数数据库中都不会运行。下面是@varonton的答案。这看起来像是我在mooc类中遇到的家庭作业问题。您的表有多大?请注意,您在SELECT子句中包含了非聚合列,这在大多数数据库中都不会运行。下面是@varonton的答案。这看起来像是我在mooc类中遇到的家庭作业问题。键入INTERNAR JOIN和JOIN之间有什么区别吗。我以前使用过JOIN,但它没有运行。还有,你为什么按d.fname,d.lname而不是d.id分组?@Misohappi。内部连接和连接是一样的。输入内部连接和连接之间有区别吗。我以前使用过JOIN,但它没有运行。还有,你为什么按d.fname,d.lname而不是d.id分组?@Misohappi。内部连接和连接是一回事。