我正在学习SQL查询。我附上上面模特的照片。 给定一组" peopleIDs",我怎么能找到有多少类型可用,并且在每种类型下有多少" Magics"在那儿。 人与人之间的多样性"和"结果"是一对多,"结果"和" Magic_score"一对多," magic_score"和#34;魔术"许多到一个。 我是否首先得到所有可用的类型"然后计算"魔法"在每种类型下?
答案 0 :(得分:2)
假设您的意思是Result.Type
,您可以通过Type
加入表格和小组,并计算Magic
。
SELECT r.Type, COUNT(m.Magic_ID), COUNT(r.peopleID)
FROM Result r
INNER JOIN Magic_Score ms ON r.Result_ID = ms.Result_ID
WHERE r.peopleID in groupPeopleIDs
GROUP BY r.Type
鉴于Result.Type
和Magic.Type
相同,并且每个Result
仅指向匹配类型的Magic
,答案应该相同,但按Magic.Type
进行分组将类似:
SELECT m.Type, COUNT(m.Magic_ID)
FROM Result r
INNER JOIN Magic_Score ms ON r.Result_ID = ms.Result_ID
INNER JOIN Magic m ON ms.Magic_ID = m.Magic_ID
WHERE r.peopleID in groupPeopleIDs
GROUP BY m.Type