Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mehrere Datensätze hintereinander anzeigen

Führen Sie einfach eine Gruppenverkettung zusammen mit einem Join zwischen den beiden Tabellen durch:

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;

Demo

Beachten Sie, dass Ihr Tabellenschema nicht vollständig normalisiert zu sein scheint. Typischerweise wird dieses Problem gelöst, indem eine einzelne Tabelle für Schülerinformationen, eine einzelne Tabelle für Ereignisse und dann eine Kreuzung verwendet wird Tabelle, die Schüler mit Ereignissen verbindet. Ihre students Die Tabelle scheint sowohl als Verbindungstabelle als auch als Tabelle mit eindeutigen Schülerinformationen zu dienen.

Ein besserer Weg, hier fortzufahren, wäre also, students umzugestalten um dies zu enthalten:

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

Und erstellen Sie eine neue Verbindungstabelle student_event um die Beziehung zwischen Schülern und Ereignissen einzuschließen:

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