sql >> データベース >  >> RDS >> Mysql

SUMと3つのテーブルを使用したMySQLJOIN

    スコアとイベントは、前に内部結合する必要があります それらをプレイヤーに外部結合します。

    サブクエリまたは括弧を使用して、この特定の結合の「優先順位」を強制することもできますが、SQLテキストでJOINの順序を使用してから、最後のJOINをプレーヤーに慎重に「方向付け」する方がよいでしょう(この場合は右)。

    COALESCEは、NULLを0に変換するためのものです。

    SELECT
        P_Id, LastName, FirstName, COALESCE(SUM(Points), 0) TotalPoints
    FROM
        Scores
        JOIN Events
            ON Event = E_Id AND Year = 2012
        RIGHT JOIN Players
            ON P_Id = Player
    GROUP BY
        P_Id, LastName, FirstName
    ORDER BY
        TotalPoints DESC;
    

    これにより、次のようになります。

    P_ID    LASTNAME    FIRSTNAME   TOTALPOINTS
    1       Hansen      Ola         6
    2       Svendson    Tove        0
    3       Pettersen   Kari        0
    

    この SQLFiddle で遊ぶことができます。 。



    1. SQLカウント

    2. PostgreSQLタイムスタンプタイプでタイムゾーンを保持する

    3. 帆はmySqlに接続できません

    4. トリガー関数で行タイプの動的列名にアクセスします