我有一个剧院和电影数据库。每个剧院都有一个TheaterID,每个电影都有一个TheaterID以使其与其剧院匹配。我想从以下剧院的数据库中选择不同类型的列表,并计算该类型中的电影。
基本上是这样的格式
Genre | Count
----------------
Action | 10
Comedy | 5
Thriller | 7
到目前为止,我已经尝试了以下代码:
SELECT DISTINCT GENRE, (
select count(distinct movie) from movies where genre = GENRE
) genre_count
from movies where theaterID = 7 SORT BY GENRE ASC;
,它确实会获得该剧院所有类型的列表,但对于count列,它将返回该剧院所有电影的计数,而不是与该类型匹配的电影的计数。有没有一种方法可以匹配内部查询中的这些值,或者我也听说JOIN
可以工作,但是我不确定在同一张表中如何使用它们。
答案 0 :(得分:3)
您可能应该使用GROUP BY
。这未经测试,但是您可以尝试以下方法:
SELECT Genre, COUNT(*) as CNT from movies WHERE theaterID = 7 GROUP BY genre ORDER BY CNT
答案 1 :(得分:1)
我将使用您的代码,并指出为什么它没有给您想要的结果:
您必须为表movies
加上别名,以便可以在子查询中使用其GENRE
:
SELECT DISTINCT m.GENRE, (
select count(distinct movie) from movies where genre = m.GENRE
) genre_count
from movies m
where m.theaterID = 7 SORT BY m.GENRE ASC;