2011-05-22 540 views
0

我有兩個表 - cpmccad_idcpm)和clicksccad_id)。幫助,MySQL查詢

當我運行:

SELECT cpm.ad_id, 
      COUNT(clicks.id) * cpm.cpm AS clicks_income  
    FROM cpm 
LEFT JOIN clicks on clicks.ad_id = cpm.ad_id and clicks.cc = cpm.cc 
GROUP BY cpm.ad_id, cpm.cc 

我得到:

ad_id | clicks_income 
--------------------- 
1  | 271.00 
1  | 2.60 
2  | 238.00 

現在的結果我想要的是:

ad_id | clicks_income 
--------------------- 
1  | 273.60 
2  | 238.00 

我怎麼能集團僅cpmad_id和所有cc的SUM?

當我刪除cpmcc我得到:

ad_id | clicks_income 
--------------------- 
1  | 273.00 
2  | 238.00 
+1

難道你只是想通過ad_id組合,而不是cc? – Jodes 2011-05-22 16:03:38

+0

是的,我做但看到我的編輯^ – ygaradon 2011-05-22 16:05:18

回答

1

不要使用COUNT(whatever) * acolumn,使用SUM(AColumn)代替。
另外一個LEFT JOIN在這裏沒有意義,因爲一個不匹配只會增加NULL到總和,這不是很有幫助。

SELECT cpm.ad_id, SUM(cpm.cpm) AS clicks_income 
FROM cpm INNER JOIN clicks ON clicks.ad_id = cpm.ad_id AND clicks.cc = cpm.cc 
GROUP BY cpm.ad_id 
+0

非常感謝你! – ygaradon 2011-05-22 16:24:25

+0

@yonathan garti,當我開始使用MySQL時,我犯了完全相同的錯誤,並且我花了我一直的時間去調試。 – Johan 2011-05-22 16:27:34

+0

你知道小小玩這個查詢後,我發現SUM(cpm.cpm)是什麼使差異。但是我不能忽視這個邏輯。我的意思是mysql如何知道我打算將所有的點擊次數與cpm相加。請你指點我一篇關於這個主題的好文章。並感謝阿金。 – ygaradon 2011-05-22 16:59:46

0
SELECT cpm.ad_id, COUNT(clicks.id)*cpm.cpm AS clicks_income 
FROM cpm LEFT JOIN clicks ON clicks.ad_id = cpm.ad_id AND clicks.cc = cpm.cc 
GROUP BY cpm.ad_id 
+0

@yonathan:請寫評論,而不是通過編輯添加反饋到別人的答案。 – 2011-05-22 16:12:42

+0

當我通過'cc'刪除組時,clicks_income不正確請參閱我的編輯^ – ygaradon 2011-05-22 16:18:01