Как создать функцию, которая суммирует заказ с несколькими предметами? - PullRequest
2 голосов
/ 12 апреля 2019

Мне нужно создать функцию, которая будет возвращать сумму заказа. Мне дали три таблицы со следующими переменными

Таблица 1 - Заказ

  • Order_ID
  • Date_Placed
  • Date_Fulfilled

Таблица 2 - Заказ продукции

  • Order_ID
  • PRODUCT_ID
  • Product_Quantity

Таблица 3 - Продукт

  • PRODUCT_ID
  • Цена

Я изо всех сил пытаюсь составить связную функцию. Любая помощь будет принята с благодарностью.

Я уже пытался настроить функцию с помощью объединений между обеими таблицами, но не могу понять, где я должен поместить свое уравнение.

BEGIN

    SELECT order.order_id, SUM(product.price * order_item.quantity)
    FROM `order`
    JOIN `order_item` ON order.order_id = order_product.order_id
    JOIN `product` ON order_product.product_id = product.product_id;
END $$

Ответы [ 3 ]

2 голосов
/ 12 апреля 2019

Вы можете быть удивлены, но таблица orders не нужна для этого запроса.Вы можете просто объединить две другие таблицы:

SELECT oi.order_id, SUM(p.price * oi.quantity)
FROM order_item oi JOIN
     product p
     ON po.product_id = p.product_id
GROUP BY oi.order_id;
1 голос
/ 12 апреля 2019

Вам нужно будет принять ваше предложение выбора, а group - ваше order.order_id. Таким образом, у вас будет по одной строке на заказ, с общим количеством sum этого заказа.

SELECT order.order_id, SUM(product.price * order_item.quantity) as total_price
FROM `order`
JOIN `order_item` ON order.order_id = order_product.order_id
JOIN `product` ON order_product.product_id = product.product_id
GROUP BY order.order_id
0 голосов
/ 12 апреля 2019

это будет работать:

SELECT order.order_id, SUM(product.price * order_item.quantity)
FROM order o,
JOIN order_item  oi,  
JOIN product p  where 
o.order_id = oi.order_id and
oi.product_id = p.product_id
group by order_product.product_id = product.product_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...