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

Mysqlは4つのテーブルを結合し、NULL値を表示します

    以下は、すべての学生を返し、存在する場合は試験32のスコアを返します。

    SELECT scores.result,students.id,exam.name, exam.id
    FROM exam
    INNER JOIN scores ON exam.id = scores.exam_id
    RIGHT OUTER JOIN students ON scores.user_id = students.user_id
    WHERE exam.id = 32
    

    select句はstudents_subjectsまたは集計関数から何も使用していなかったので、それへの結合が何のためにあるのかわかりませんか?おそらく、上記から始めて、そこから構築することができます。

    編集:私の最初のコメントに基づく新しい戦略。すべての生徒を探して、存在するスコアを見つけます。スコアがない場合はnullになります。

    SELECT scores.result,students.id,exam.name, exam.id
    FROM exam
    INNER JOIN students_subjects ON students_subjects.group_id = exam.group_id
    INNER JOIN students ON students_subjects.user_id = students.user_id
    LEFT OUTER JOIN scores ON scores.user_id = students.user_id
      AND scores.exam_id = exam.id
    WHERE exam.id = 32
    


    1. データベースマージテーブル

    2. mysqlデータベースをOracleに変換します

    3. Oracle Database 11gのアクセス制御リスト(ACL)によってネットワークアクセスが拒否されました

    4. 1つの特定のサーバーでのあいまいな列名エラー