СУММА нескольких продуктов

#sql #sum

#sql #сумма

Вопрос:

Я действительно борюсь с этим. ИТАК, у меня есть 2 таблицы:

  • Продукты
  • PendingCartItems

Вот скриншот структуры для обеих таблиц:

Продукты

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. Ах .. предположил, что порядок изображений был таким же, как порядок перечисленных таблиц.