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

複数のレコードを続けて表示する

    2つのテーブル間の結合とともにグループ連結を行うだけです:

    SELECT
        s.student_name AS Students,
        GROUP_CONCAT(e.event_name) AS Events
    FROM students s
    LEFT JOIN events e
        ON s.event_id = e.event_id
    GROUP BY
        s.student_name;
    

    デモ

    テーブルスキーマは完全に正規化されていないように見えることに注意してください。通常、この問題を処理する方法は、学生情報用の単一のテーブル、イベント用の単一のテーブル、そしてジャンクションを用意することです。 学生とイベントをつなぐテーブル。あなたのstudents テーブルは、ジャンクションテーブルとしても、固有の生徒情報を含むテーブルとしても機能しているようです。

    したがって、ここで続行するためのより良い方法は、studentsをリファクタリングすることです。 これを含めるには:

    (1, 'student1'),
    (2, 'student2'),
    (3, 'student3');
    

    そして、新しいジャンクションテーブルstudent_eventを作成します 学生とイベントの関係を含めるには:

    (id, student_id, event_id)
    (1, 1, 1),
    (2, 1, 2),
    (3, 1, 3),
    (4, 1, 4),
    (5, 2, 3),
    (6, 3, 2),
    (7, 3, 4);
    



    1. 私のお気に入りのPostgreSQL拡張機能-パート2-

    2. 親IDとmysqlのwhere句ですべての子を取得します

    3. PostgreSQLのAVG()関数

    4. PythonMySQdbでレコードが存在するかどうかを確認する方法