2017-01-04 11 views
-4

私が持っている3つのテーブル:複雑なMySQLのクエリ・コード

表1:バッジ
列:badgeid(主キー)、値

表2:ユーザー
列:ユーザーID(主キー)、名前

表3:Badge_User
列:ユーザーID(ForeignKeyの)、badgeid(ForeignKeyの)
(ワンユーザーが二度同じバッジを持っていることはありません)

すべてのバッジ値が合計され、各ユーザーに表示されるように、表が必要です。例えば


ユーザーID、名前、sum_of_badge_value
行1:2、マイク、30

Table 1: Badge 
    | badgeid value | 
    | 1  5  | 
    | 2  10  | 
    | 3  15  | 



    Table 2: User 
    | userid name | 
    | 1  Bob | 
    | 2  Mike | 
    | 3  Duke | 
    | 4  Craig | 



    Table 3: User_Badge 
    | userid badgeid | 
    | 1  1  | 
    | 1  2  | 
    | 2  3  | 
    | 2  2  | 
    | 2  1  | 
    | 3  3  | 
    | 1  1  | 

私はクエリの結果は次のようになり、最高sum_of_badge_value
クエリによってソートしたいですrow2:1、Bob、15
row3:3、Duke、15 row4:4、Craig、0

このクエリを書く方法についての助けがあれば幸いです!

+5

**私は** SO **ない自由なコーディングやコード変換やデバッグやチュートリアルやライブラリの検索サービス** ___Hereは、我々はあなたの試みを修正SOであり、我々はyou___ – RiggsFolly

+1

のために物事をコーディングしていないしたい他の人がここでどのように質問しているかを見てください。 http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-を参照してください。クエリ – Strawberry

+1

あなたが試した@Marcipanas? – denny

答えて

2

これはまったく複雑ではないので、基本的なSQLチュートリアルを読んで、実際にこれを理解してください。 私はあなたにいくつかのヒントを与えます。

SELECT ______, 
     sum(_____) 
FROM _____ ba_us 
JOIN _____ ba USING(____id) 
JOIN _____ us USING(____id) 
GROUP BY _____ 
+0

これは機能しますが、バッジを持っていないユーザーも表示する必要があります。これは、バッジを持つすべてのユーザーのみを表示します。バッジと一致しなかったユーザーを含める方法はありますか? – Marcipanas

+0

バッジへの 'Join'を' left join'で置き換えて、これを読んでください: https://www.sitepoint.com/understanding-sql-joins-mysql-database/ –

+0

ありがとうございました! – Marcipanas