“集团通过” 高级SQL查询
我学习SQL查询。我附上了我上面的模型的图片。 给定一组“peopleIDs”,我怎么能找到多少种可用,每种类型的多少“魔术的”在那里下的。 “人”与“结果”之间的多样性是一个对许多人来说,“结果”和“Magic_score”一到多,“magic_score”和“神奇”多对多之一。 我是否首先获得“所有可用类型”,然后在每种类型下计算“魔术”?
假设您的意思是Result.Type
,您可以加入表格并按Type
加入组并计算Magic
s。
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
s的匹配类型,答案应该是相同的,但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
谢谢。实际上,Result.type与Magic.type相同。 – user3369592
@ user3369592这不是一个梦幻般的设计,那么,为什么不使用'Magic_ID'?除非Result或Magic表格很大,否则这种类型的非规范化是没有意义的。 – pimbrouwers
@pim我同意你的看法,但我不允许更改设计.. – user3369592
见https://meta.*.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql - 查询 – Strawberry
你的意思是有多少'Result.Type'或多少个'Magic.Type'? – NetMage
@NetMage感谢您的回复。 Result.type和magic.type是相同的东西。 – user3369592