2010-11-21 61 views
0

我正在嘗試檢索以下信息: 對於平均訂單金額大於$ 1,800的每個客戶,列出客戶名稱,客戶編號和訂單總數。SQL檢索問題

我的代碼是目前的。

SELECT c.cname, c.`cust#`, COUNT(oi.`order#`) 
FROM CUSTOMER c, `ORDER` o, `ORDER_ITEM` oi 
WHERE c.`cust#` = o.`cust#` 
AND o.`order#` = oi.`order#` 
AND AVG(o.`ord_amt`) > 1800 
GROUP BY c.cname, c .`cust#` 

的表和字段到我的數據庫

 
customer(cust#:char(3), cname:varchar(30), city:varchar(20)) 
order (order# :char(4), odate, cust#:char(3), ord_amt:decimal(10.2)) 
order_item(order# :char(4), item#: char(4), qty:int(11)) 
item(item# :char(4), unit_price:decimal(10.2)) 
shipment(order# :char(4), warehouse# :char(4), ship_date:date) 
warehouse (warehouse#: char(4), city:varchar(20)) 

回答

0

您應該使用JOIN符號和HAVING子句來比較的總和;你不需要爲了項目表:

SELECT c.cname, c.`cust#`, COUNT(oi.`order#`) 
    FROM CUSTOMER c JOIN `ORDER` o ON c.`cust#` = o.`cust#` 
GROUP BY c.cname, c .`cust#` 
HAVING AVG(o.`ord_amt`) > 1800 

(GROUP BY的秩序,GolezTrol有固定根據註釋 - 感謝;我的藉口是,這是在深夜。)

+0

我想你需要將GROUP BY放在HAVING之上。 – GolezTrol 2010-11-21 09:09:59

+0

如果我要去檢索從至少兩個倉庫發出的訂單的倉庫總數的信息。我不需要嵌套子句嗎? – Meat 2010-11-21 10:32:26

+0

@Meat:這聽起來像另一個GROUP BY和HAVING子句查詢兩個表上的直接連接 - 幾乎與現有的查詢同構。 – 2010-11-21 15:19:00