Allegro75
@Allegro75
SummaryTables.ru - сайт с футбольной статистикой

Как сформировать запрос?

Есть таблица orders с заказами.
В ней поля id и sum.
Две записи, допустим, есть.
Id 1 и 2.
Sum 100 и 200 соответственно.

И есть таблица foodcost с элементами заказов.
В ней поля id, order_id, foodcost_sum
Для каждого order_id в ней, допустим, парочка элементов, у каждого элемента свой foodcost_sum.

Хочется для id заказов 1 и 2 посчитать общую сумму sum и foodcost_sum.
Т.е. на выходе нужны два числа:
-сумма orders.sum по известным order_id;
- и сумма foodcost.foodcost_sum по ним же.

Пробую что-то вроде

SELECT 
SUM(foodcost.foodcost_sum) AS foodCostAmount,
SUM(orders.sum)  AS proceeds
FROM foodcost
JOIN orders
ON foodcost.order_id = orders.id
WHERE foodcost.order_id IN (1, 2)


И даёт не корректный результат.
SUM(orders.sum) начинает увеличиваться в связи с количеством записей в foodcost
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
Fockker
@Fockker
Потомок старинного рода Ипатьевых-Колотитьевых
У меня получилось как-то так
select sum(o.sum), sum(fsum) from orders o left join 
(select order_id, sum(price) fsum from foodcost where order_id in (1,2) group by order_id) t
on o.id=t.order_id 
where o.id in (1,2);

То есть группировать продукты перед джойном.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@borisalekseev
extra beginner junior python backend
Зачем SUM(orders.sum) ?
Хочется для id заказов 1 и 2 посчитать общую сумму sum и foodcost_sum

Общая сумма, следуя из
Есть таблица orders с заказами.
В ней поля id и sum.
уже записана. Зачем её считать?
Ответ написан
Ваш ответ на вопрос

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

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