Gör bara en gruppsammansättning tillsammans med en koppling mellan de två tabellerna:
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;
Observera att ditt tabellschema inte verkar vara helt normaliserat. Vanligtvis är sättet att hantera detta problem att ha en enda tabell för elevinformation, en enda tabell för händelser och sedan en korsning tabell som kopplar elever till evenemang. Dina students
Tabellen verkar fungera både som en korsningstabell och som en tabell som innehåller unik elevinformation.
Så ett bättre sätt att gå vidare här skulle vara att refaktorera students
att innehålla detta:
(1, 'student1'),
(2, 'student2'),
(3, 'student3');
Och skapa en ny korsningstabell student_event
att innehålla relationen mellan elever och evenemang:
(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);