2017-11-10 102 views
0

enter image description here“集团通过” 高级SQL查询

我学习SQL查询。我附上了我上面的模型的图片。 给定一组“peopleIDs”,我怎么能找到多少种可用,每种类型的多少“魔术的”在那里下的。 “人”与“结果”之间的多样性是一个对许多人来说,“结果”和“Magic_score”一到多,“magic_score”和“神奇”多对多之一。 我是否首先获得“所有可用类型”,然后在每种类型下计算“魔术”?

+1

见https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql - 查询 – Strawberry

+0

你的意思是有多少'Result.Type'或多少个'Magic.Type'? – NetMage

+0

@NetMage感谢您的回复。 Result.type和magic.type是相同的东西。 – user3369592

回答

2

假设您的意思是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.TypeMagic.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 
+0

谢谢。实际上,Result.type与Magic.type相同。 – user3369592

+1

@ user3369592这不是一个梦幻般的设计,那么,为什么不使用'Magic_ID'?除非Result或Magic表格很大,否则这种类型的非规范化是没有意义的。 – pimbrouwers

+1

@pim我同意你的看法,但我不允许更改设计.. – user3369592