我正在做一个数据库项目,我花了大约3个小时让自己感到困惑,所以我想我会尝试在这里得到一些帮助。
我有音乐类型,比赛和比赛参赛表。 我需要弄清楚每种类型的竞赛数量以及每种类型的参赛作品数量。 当我在查询中只有一个时,我的竞赛和条目的聚合函数工作,但是当我在同一个查询中都有它们时,我也得到了竞赛中条目列的结果,我不知道我做错了什么,这可能是一件愚蠢而简单的事。
这是我的疑问:
SELECT Genre.Genre, count(Competition.Genre_ID)Competitions, count(Comp_Entry.Comp_ID)Bands
FROM Genre, Competition, Comp_Entry
WHERE Genre.Genre_ID = Competition.Genre_ID
AND Comp_Entry.Comp_ID = Competition.Comp_ID
GROUP BY Competition.Genre_ID, Genre.Genre
ORDER BY Genre.Genre;
谁能看到我做错了什么?
感谢。
答案 0 :(得分:0)
您应该使用正确的join
语法。但您遇到的问题是您需要count(distinct)
而不是count()
:
SELECT Genre.Genre, count(Competition.Genre_ID) as Competitions,
count(distinct Comp_Entry.Comp_ID) as Bands
FROM Genre join
Competition
on Genre.Genre_ID = Competition.Genre_ID join
Comp_Entry
on Comp_Entry.Comp_ID = Competition.Comp_ID
GROUP BY Competition.Genre_ID, Genre.Genre
ORDER BY Genre.Genre;