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);