Mysql
 sql >> Base de données >  >> RDS >> Mysql

Afficher plusieurs enregistrements à la suite

Faites simplement une concaténation de groupe avec une jointure entre les deux tables :

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;

Démo

Notez que votre schéma de table semble ne pas être complètement normalisé. Généralement, la façon de gérer ce problème est d'avoir une seule table pour les informations sur les étudiants, une seule table pour les événements, puis une jonction tableau qui relie les étudiants aux événements. Vos students semble servir à la fois de table de jonction et de table contenant des informations uniques sur les étudiants.

Donc, une meilleure façon de procéder ici serait de refactoriser students pour contenir ceci :

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

Et créez une nouvelle table de jonction student_event pour contenir la relation entre les étudiants et les événements :

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