@vdorokhin89

Есть ли возможность в mysql вывести инфу из присоединенной таблицы в виде вложенного массива?

Необходимо все строки таблицы с нужными параметрами вывести на страницу. При одной таблице все просто, но если присоединить вторую, в которой имеется от одного и более совпадений, то в возвращаемом массиве для каждого совпадения во второй таблице дублируется строка первой. Есть ли возможность внутри mysql получать одну строку первой таблицы и вложенный массив значений из второй? Для вывода на страницу это ведь удобней, потому мне кажется должно быть что-то подобное, но почему-то нигде не могу найти как это сделать.
SELECT * FROM table1 LEFT JOIN table2 ON table2.id2 = table1.id1 WHERE param = param

Заранее благодарю
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Вы можете использовать JSON_ARRAYAGG и JSON_OBJECT :

SELECT cat.id, cat.name, JSON_ARRAYAGG(
  JSON_OBJECT('pro_name',pro.name,'pro_pice',pro.price)
) prod
FROM products as pro
JOIN categories as cat on pro.cat_id = cat.id
GROUP BY cat.id, cat.name
ORDER BY cat.id;


MySQL JSON aggregate
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы