Po prostu wykonaj konkatenację grupową wraz z połączeniem między dwoma tabelami:
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;
Zwróć uwagę, że schemat tabeli wydaje się nie być całkowicie znormalizowany. Zazwyczaj sposobem na rozwiązanie tego problemu jest posiadanie jednej tabeli na informacje o uczniach, jednej tabeli na wydarzenia, a następnie skrzyżowania tabela, która łączy uczniów z wydarzeniami. Twoi students
Wydaje się, że tabela służy zarówno jako tabela połączeń, jak i tabela zawierająca unikalne informacje o uczniach.
Lepszym sposobem postępowania w tym miejscu jest refaktoryzacja students
zawierać to:
(1, 'student1'),
(2, 'student2'),
(3, 'student3');
I utwórz nową tabelę połączeń student_event
zawierać relacje między uczniami a wydarzeniami:
(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);