Трябва да посочите DISTINCT
, т.е.
select users.name, group_concat( DISTINCT programs.name)
Вижте MySQL документите тук .
Опитайте да промените заявката си на:
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
Това ще ви даде null
за всеки потребител без програми, свързани с тях. За да ги филтрирате, просто добавете WHERE programs.id IS NOT NULL
.