Many to Many получение всех данных в одной строке
имеется 3 таблицы: ads,keyskills_to_ads, key_skills.
keyskills_to_ads

SELECT `ads`.id AS id, kk.content AS skills FROM `ads` INNER JOIN `keyskills_to_ads` AS k ON `ads`.id = k.ads_id INNER JOIN `key_skills` AS kk ON kk.id = k.key_skill_id
И в ответ выдается несколько строк

Но как мне получить ответ в виде одной строки где в поле skills будет перечислять через запятую все связанные ключевые навыки, то есть "C++, C#"?
БД Mysql.
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
MySQL 8.0
Я не смог проверить ваш SELECT..., потому что вы не предоставили минимально воспроизводимый пример в SQL.
Вот решение используя CTE и метод GROUP_CONCAT().
SQL
WITH cte (id, skills) AS (
SELECT `ads`.id AS id, kk.content AS skills
FROM `ads` INNER JOIN `keyskills_to_ads` AS k ON `ads`.id = k.ads_id
INNER JOIN `key_skills` AS kk ON kk.id = k.key_skill_id
)
SELECT id, GROUP_CONCAT(skills ORDER BY skills ASC SEPARATOR ', ') AS skillList
FROM cte GROUP BY id;

