Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mostrar vários registros em uma linha


Basta fazer uma concatenação de grupo junto com uma junção entre as duas tabelas:
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;



Demonstração



Observe que seu esquema de tabela parece não estar completamente normalizado. Normalmente, a maneira de lidar com esse problema é ter uma única tabela para informações do aluno, uma única tabela para eventos e, em seguida, uma junção tabela que conecta os alunos aos eventos. Seus students table parece estar servindo tanto como uma tabela de junção quanto como uma tabela contendo informações exclusivas do aluno.

Portanto, uma maneira melhor de proceder aqui seria refatorar students para conter isso:
(1, 'student1'),
(2, 'student2'),
(3, 'student3');

E crie uma nova tabela de junção student_event para conter a relação entre alunos e eventos:
(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);