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

Junção de tabela muitos para muitos com pivô


Você precisa especificar um DISTINCT , ou seja
select users.name, group_concat( DISTINCT programs.name)

Veja a documentação do MySQL aqui .

Tente alterar sua consulta para:
SELECT users.name, group_concat(programs.name) 
from users
LEFT JOIN linker on linker.user_id = users.id
LEFT JOIN programs on linker.program_id = programs.id
GROUP BY users.id

Isso lhe dará um null para qualquer usuário sem programas associados a eles. Para filtrá-los, basta adicionar um WHERE programs.id IS NOT NULL .