Musíte zadat DISTINCT
, tj.
select users.name, group_concat( DISTINCT programs.name)
Podívejte se na dokumenty MySQL zde .
Zkuste změnit svůj dotaz na:
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
Tím získáte null
pro každého uživatele, k němuž nejsou přidruženy žádné programy. Chcete-li je odfiltrovat, stačí přidat WHERE programs.id IS NOT NULL
.