#sql #sum
#sql #сумма
Вопрос:
Я действительно борюсь с этим. ИТАК, у меня есть 2 таблицы:
- Продукты
- PendingCartItems
Вот скриншот структуры для обеих таблиц:
Мне нужно получить сумму для всех 3 продуктов WHERE pending_cart_id = 18
.
SELECT SUM(price) as TotalCartPrice FROM products WHERE id = '274'
Как я могу написать это так, чтобы он суммировал все 3 идентификатора (274 251 49 )?
Комментарии:
1. Подсказка:
IN
может использоваться вместо=
.2. Или, по крайней мере, использовать
or
, т.е.id = ... or id = .. or id = ...
3. Разве не для этого существуют объединения?
Ответ №1:
Не сработало бы что-то подобное?
Select sum(b.price*a.quantity)
from pending_cart_items a
join products b
on a.product_id=b.id
where a.pending_cart_id =18
Редактировать: только что понял, что я пропустил количество из расчета корзины 🙂
Комментарии:
1. Да, это оно. И я также забыл о количестве. Спасибо!
Ответ №2:
Если модель является реляционной, вы можете попробовать это
SELECT
SUM(price) as TotalCartPrice
FROM products
INNER JOIN PendingCartItems ON products.id = PendingCartItems.product_id
WHERE PendingCartItems.pending_cart_id = 18
GROUP BY PendingCartItems.pending_cart_id
Ответ №3:
Вам нужно будет объединить две таблицы:-
select
sum(p.price)
from Products p
inner join PendingCartItems pci on p.id= pci.product_id
where pci.pending_cart_id = 18
Комментарии:
1. Я думаю, что это наоборот — я думаю, что цена зависит от продуктов — и вы должны учитывать количество, если оно больше единицы, как `sum (p.price * pci.quantity)
2. Ах .. предположил, что порядок изображений был таким же, как порядок перечисленных таблиц.