Many to Many получение всех данных в одной строке

имеется 3 таблицы: ads,keyskills_to_ads, key_skills.
keyskills_to_ads
введите сюда описание изображения

key_skills
введите сюда описание изображения
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;
→ Ссылка