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

同じテーブルで2回JOINを2回行う

    左側の結合テーブルのwhere句の制限により、nullレコードが原因で目的の結果が失われます...したがって、制限を結合自体に移動して、結合の前に制限が適用されるようにし、null値のレコードを保持します。

    SELECT i.*,r.*,r2.*, r.points+r2.points AS sum_points
    FROM list_couples AS l
    LEFT JOIN rank AS r ON l.p_1=r.player
      and r.week='$week' AND r.anno='$anno' 
    LEFT JOIN rank AS r2 ON l.p_2=r2.player
      and  r2.week='$week' AND r2.anno='$year'
    ORDER BY sum_points DESC
    

    plutoには週/年(anno)がないため、where句はそのレコードを削除します。制限を結合に移動することにより、結合が発生する前にフィルターが適用され、左側の外部結合が維持されます。

    言い換えれば、WHERE句は、左側を内側に結合させています!




    1. データベーステーブルのソート順列の使用

    2. MySQLをVisualStudioC#に接続する

    3. PHPで文字列をMySQLタイムスタンプ形式に変換する

    4. SQLServerインスタンスのすべてのデータベースで主キー制約のないテーブルのリストを取得する方法-SQLServer/TSQLチュートリアルパート62