2014-03-03 60 views
0

它不識別「總和」。爲什麼?它不識別「總和」。爲什麼?

SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum 
FROM clients c, contracts_rent r, payments p 
WHERE c.c_id = r.c_id 
AND r.contract_id = p.contract_id and sum>1300 
GROUP BY c.c_id 
+1

什麼是錯誤信息?它是MySQL嗎? –

回答

0

類似...

SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum 
FROM clients c, contracts_rent r, payments p 
WHERE c.c_id = r.c_id 
AND r.contract_id = p.contract_id 
GROUP BY c.c_id 
HAVING SUM(p.p_sum) > 1300 

當你想在聚合函數值過濾,使用HAVING關鍵字

2

彙總列通常不能一where子句中,因爲該條款發生聚集處理。

你需要的是having子句,它在聚合後發生

比較類似:

select id, something, p_sum from tbl 
where p_sum > 100 

到:

select id, something, sum(p_sum) from tbl 
group by something 
having sum(p_sum) > 100 

前者選擇單個行,其中該行的總和是something大於100,後者組然後選擇分組的行總彙總數大於100.

0
SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum 
FROM clients c, contracts_rent r, payments p 
WHERE c.c_id = r.c_id 
AND r.contract_id = p.contract_id 
GROUP BY c.c_id 
HAVING SUM(p.p_sum) > 1300 

確保你保持聯接記住得到相應的結果。