2017-11-10 16 views
0

enter image description here"Group by"高度なSQLクエリ

私はSQLクエリを学習しています。私は上記のモデルの写真を添付し​​ます。 「peopleIDs」のグループがある場合、どのように多くのタイプが利用可能であり、どのタイプの下に「Magics」がいくつあるかを見つけることができます。 "人"と "結果"の多重度は、1対多であり、 "結果"と "Magic_score"は一対多であり、 "magic_score"と "magic"は多対1です。 まず、「利用可能なすべてのタイプ」を取得してから、それぞれのタイプで「魔法」を数えますか?

+1

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

+0

'Result.Type'の数や' Magic.Type'の数はどういう意味ですか? – NetMage

+0

@NetMageご返信ありがとうございます。 Result.typeとmagic.typeは同じものです。 – user3369592

答えて

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.TypeMagic.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 
+0

ありがとうございます。実際、Result.typeはMagic.typeと同じです。 – user3369592

+1

@ user3369592素晴らしいデザインではないのに、なぜMagic_IDを使わないのですか?結果テーブルまたはマジックテーブルのいずれかが膨大でない限り、このタイプの非正規化は意味をなさない。 – pimbrouwers

+1

@pim私はあなたに同意しますが、私はデザインを変更することはできません。 – user3369592