sql >> Database >  >> RDS >> Mysql

Meerdere records achter elkaar weergeven

Voer gewoon een groepsaaneenschakeling uit samen met een join tussen de twee tabellen:

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

Merk op dat uw tabelschema niet volledig genormaliseerd lijkt te zijn. Meestal is de manier om dit probleem op te lossen het hebben van een enkele tabel voor studentinformatie, een enkele tabel voor evenementen en vervolgens een knooppunt tabel die studenten verbindt met evenementen. Je students tafel lijkt zowel dienst te doen als een verbindingstafel als een tafel met unieke leerlinginformatie.

Dus een betere manier om hier verder te gaan zou zijn om students te refactoren om dit te bevatten:

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

En maak een nieuwe verbindingstabel student_event om de relatie tussen studenten en evenementen te bevatten:

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



  1. Stuurprogramma:[e-mail beveiligd] heeft null geretourneerd voor URL... Tijdens implementatie in springboot naar Heroku

  2. Hoe kan ik de twee queries natuurlijk samenvoegen met een clausule?

  3. Oracle current_timestamp naar seconden conversie

  4. MySQL kopieer een gebruiker