2015-08-20 60 views
0

我的表PURCHASES具有以下列:NAME,ORDER_ID,ITEM_ID根據多個訂單選擇行

當客戶訂單2項,則將其記錄與下相同ORDER_ID 2行和兩個相同或不同ITEM_ID(取決於如果客戶已經購買相同的項目或沒有)。

我想選擇所有誰總共不到3項目少於4項所做的(不管它們是相同的)的客戶端。下面是當前的代碼:

SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID) AS number_of_items 
FROM `PURCHASES` 
WHERE number_of_orders <3 
AND number_of_items <4 
GROUP BY NAME 
ORDER BY number_of_items DESC 

我收到以下錯誤信息:Unknown column 'number_of_orders' in 'where clause'

+1

你不能在where子句中有派生列別名,select子句項在查詢執行結束時定義ñ。 使用 「哪裏COUNT(DISTINCT ORDER_ID)> 3」,而不是 – Prashant

+1

相同與NUMBER_OF_ITEMS。 – Prashant

+0

嗨PRASHANT:我得到「無效使用組功能的」 –

回答

0

使用該查詢做

SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID) AS 
number_of_items 
FROM `PURCHASES` 
GROUP BY NAME 
HAving COUNT(DISTINCT ORDER_ID) <3 
AND COUNT(ITEM_ID) <4 
ORDER BY number_of_items DESC 
+0

幹得好Prashant。 –

0

你應該使用子查詢

SELECT * FROM (
    SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID) AS number_of_items) 
FROM `PURCHASES` 
WHERE number_of_orders <3 
    AND number_of_items <4 
GROUP BY NAME 
ORDER BY number_of_items DESC 
+0

嗨AudreyS,所提出的語法不起作用。 –