Mysql
 sql >> Database >  >> RDS >> Mysql

Mostra più record di seguito

Basta fare una concatenazione di gruppo insieme a un join tra le due tabelle:

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;

Dimostrazione

Nota che lo schema della tua tabella sembra non essere completamente normalizzato. In genere, il modo per gestire questo problema consiste nell'avere una singola tabella per le informazioni sugli studenti, una singola tabella per gli eventi e quindi un incrocio tabella che collega gli studenti agli eventi. I tuoi students sembra che la tabella serva sia come tabella di giunzione che come tabella contenente informazioni univoche sugli studenti.

Quindi un modo migliore per procedere qui sarebbe il refactoring di students per contenere questo:

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

E crea una nuova tabella di giunzione student_event per contenere il rapporto tra studenti ed eventi:

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