Является ли этот оператор SQL для получения ежегодных продаж (доходов) правильно? - PullRequest
0 голосов
/ 26 апреля 2019
CUSTOMER (idCustomer,name,phone,email, markdown)
ORDER (idOrder,day,Customer_idCustomer)
ORDERITEM (idOrderItem, quantity, Order_idOrder, Product_idProduct)
PRODUCT (idProduct,name,price,description)

Правильно ли это утверждение?Мне кажется, это дает мне правильный результат, но я хочу это проверить.Спасибо за вашу помощь.

SELECT SUM((oi.quantity * p.price) * c.markdown)
FROM orderitem oi,
     product p,
     customer c,
     `order` o 
WHERE oi.Product_idProduct = p.idProduct    
  AND o.Customer_idCustomer = c.idCustomer
  AND (o.day BETWEEN '2019-01-01' AND '2019-12-31')

РЕДАКТИРОВАТЬ: С JOIN (и каждый стол присоединился):

SELECT SUM((oi.quantity * p.price) * c.markdown) FROM orderitem oi
JOIN product p ON oi.Product_idProduct = p.idProduct 
JOIN `order` o ON o.idOrder = oi.Order_idOrder 
JOIN customer c ON c.idCustomer = o.Customer_idCustomer 
AND (o.day BETWEEN '2019-01-01' AND '2019-12-31')

РЕДАКТИРОВАТЬ # 2: ОК.Поэтому я перенес свои данные в Excel и провел здесь вычисления, чтобы проверить результаты, и кажется, что утверждение с JOIN является правильным.Спасибо всем!

1 Ответ

0 голосов
/ 27 апреля 2019

Вероятно, это правильное решение:

SELECT SUM((oi.quantity * p.price) * c.markdown) FROM orderitem oi
JOIN product p ON oi.Product_idProduct = p.idProduct 
JOIN `order` o ON o.idOrder = oi.Order_idOrder 
JOIN customer c ON c.idCustomer = o.Customer_idCustomer 
AND (o.day BETWEEN '2019-01-01' AND '2019-12-31')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...