从数据库中选择不同的值,然后计算与结果匹配的每个值

时间:2019-04-03 18:09:50

标签: sqlite

我有一个剧院和电影数据库。每个剧院都有一个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可以工作,但是我不确定在同一张表中如何使用它们。

2 个答案:

答案 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;