Как упоминалось в заголовке, я пытался объединить объекты json в массив json, где идентификатор тот же. У меня есть основная таблица «курс», которая имеет уникальный идентификатор и подключена к таблице «компетенц» через таблицу ссылок. Для каждого «курса» может быть несколько «компетензенов». Однако после нескольких часов попыток я все еще не мог заставить его работать.
это таблица ссылок
Это мой запрос:
SELECT DISTINCT
kurs.id,
kurs.Kursname,
kurs.Kursbeschreibung,
JSON_OBJECT('id',
kkat.id,
'spalte',
kkat.spalte,
'kurskategoriename',
kkat.kurskategoriename) AS kurskategorie,
JSON_ARRAY(JSON_OBJECT('id',
komp.id,
'kompetenzname',
komp.Kompetenzname)) AS kurskompetenzen_erlerndend,
kurs.link
FROM
wipro_hs22.kurs
JOIN
wipro_hs22.kurs_kurskategorie AS k_k ON kurs.id = k_k.idKurs
JOIN
wipro_hs22.kurskategorie AS kkat ON k_k.idKurskategorie = kkat.id
JOIN
wipro_hs22.kurs_kompetenz AS k_ko ON kurs.id = k_ko.idKurs
JOIN
wipro_hs22.kompetenz AS komp ON k_ko.idKompetenz = komp.id;
результат, который я получаю, следующий:
но я хочу объединить все объекты json в столбце «kurskompetenzen_erlerndend» в json_array, где идентификатор в начале набора результатов одинаков. Я не знаю, чего мне не хватает, у меня нет опыта работы с sql. Надеюсь, кто-нибудь может помочь, спасибо заранее :)
Сам нашел ответ вскоре после того, как подумал, что не смогу его решить.
Работал с этим запросом:
SELECT DISTINCT
kurs.id,
kurs.Kursname,
kurs.Kursbeschreibung,
JSON_OBJECT('id',
kkat.id,
'spalte',
kkat.spalte,
'kurskategoriename',
kkat.kurskategoriename) AS kurskategorie,
(SELECT
JSON_ARRAYAGG(JSON_OBJECT('id',
komp.id,
'kompetenzname',
komp.Kompetenzname))
FROM
wipro_hs22.kompetenz AS komp
JOIN
wipro_hs22.kurs_kompetenz AS k_komp ON komp.id = k_komp.idKompetenz
WHERE
k_komp.idKurs = kurs.id) AS kurskompetenzen_erlerndend,
kurs.link
FROM
wipro_hs22.kurs
JOIN
wipro_hs22.kurs_kurskategorie AS k_k ON kurs.id = k_k.idKurs
JOIN
wipro_hs22.kurskategorie AS kkat ON k_k.idKurskategorie = kkat.id;