@FANTASANTA

Как получить сумму стоимости товаров из массива json?

В базе данных имеются такие данные:

id | data
1  |  products": [{"price": 1000}, {"price": 2000}]


Мне нужно получить сумму price (3000), я делаю так:
AnyModel::select(DB::raw('SUM(data->"$.products[*].price") as totalsales'));

Результат получаю 0
Как мне получить сумму всех price из массива json?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT test.id, SUM(jsontable.price) total_price
FROM test
CROSS JOIN JSON_TABLE(test.data,
                      '$.products[*]' COLUMNS (price INT PATH '$.price')) jsontable
GROUP BY test.id

fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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