Digamos que eu tenha a seguinte estrutura:
Cursos
EU IA | nome |
---|---|
1 | Matemática |
2 | História |
Estudantes
EU IA | nome | ID do curso |
---|---|---|
1 | Prumo | 1 |
2 | Alice | 1 |
Quero fazer uma consulta que liste todos os alunos de um curso, mas filtre os cursos se um aluno específico estiver naquele curso.
Se eu usar a seguinte consulta, o aluno "Bob" não estará na lista de alunos separados por vírgulas.
SELECT
c.name,
GROUP_CONCAT(s.name separator ',')
FROM
Courses as c
LEFT JOIN Students s ON s.courseID = c.ID
WEHRE
s.name = 'Alice'
GROUP BY
c.name
Sei que posso me juntar duas vezes e usar uma para fazer a filtragem e a outra para o GROUP_CONCAT
, mas parece ineficiente porque estou me juntando duas vezes. Existe uma maneira mais eficiente e/ou direta de fazer isso?