2016-01-03 2 views
-1

У меня есть две таблицы: Order and Order_Item.
Включить столбец в SELECT не в группе

Заказать имеет столбцы:
1) Order_ID Integer
2) Order_Time Дата

Order_Item имеет столбцы:
1) Order_Item_Id Integer
2) Order_ID Integer (FK)
3) Order_Quantity Integer
4) Product_Id (FK) // из таблицы продуктов (Product_Id, Product_Name, Product_Price)

Я хочу написать запрос, как это:

ВЫБРАТЬ PRODUCT_ID, COUNT (PRODUCT_ID) * Order_Quantity
ОТ Order_Item, Заказ
ГДЕ Order.Date МЕЖДУ '31 -дек-2015' и '5-jan-2016'
И Order_Item.Order_Id = Order.Order_Id
GROUP BY OrderItem.Product_Id;

Результаты должны выглядеть следующим образом:

PRODUCT_ID       Number_of_orders_from_customers
                                                       

я нашел много решений (как этот Efficiently Include Column not in Group By of SQL Query), но проблема в том, что я Order_Quantity из запроса с GROUP BY.

Любые решения?

ответ

0

Вы имеете в виду вот это?

SELECT Product_Id , COUNT(*) AS Number_of_orders_from_customers 
FROM Order_Item, Order 
WHERE Order.Date BETWEEN '31-dec-2015' and '5-jan-2016' 
AND Order_Item.Order_Id =Order.Order_Id 
GROUP BY OrderItem.Product_Id ; 
0

Я думаю, что вы хотите sum, а также надлежащего присоединиться к синтаксису, таблицы псевдонимов и стандартных форматов даты:

SELECT oi.Product_Id , SUM(oi.Order_Quantity) 
FROM Order_Item oi JOIN 
    `Order` o 
    ON oi.Order_Id = o.Order_Id 
WHERE o.OrderTime BETWEEN '2015-12-31' and '2015-01-05' 
GROUP BY oi.Product_Id ; 
+0

Да, это то, что мне нужно. Спасибо! – gzsun