Debe especificar un DISTINCT
, es decir,
select users.name, group_concat( DISTINCT programs.name)
Consulte los documentos de MySQL aquí .
Intenta cambiar tu consulta a:
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
Esto le dará un null
para cualquier usuario sin programas asociados con ellos. Para filtrarlos, simplemente agregue un WHERE programs.id IS NOT NULL
.