2013-03-31 182 views
0

我遇到問題&我是新手。從表格和同一列中選擇相同的SUM兩個不同的ID

我稱一表「的項目」 並有標識列,數列 還我有一個字符表,是項目業主IDS

我這裏有說working..and代碼顯示了該項目,其計.. 頂部字符解釋更多..

"SELECT SUM(it.count) FROM characters ch 
LEFT OUTER JOIN items it ON ch.charId=it.owner_id 
WHERE item_id=40001 ORDER BY SUM(it.count) DESC LIMIT 20");) 

所以我想究竟是什麼使這需要從同一項目表和相同的列數的第二項ID列表...

任何人都可以幫助我?

+0

是否與Java或JavaScript(完全不同的語言)有什麼關係? – RobG

回答

2

一開始,讓我做你的查詢有點更具可讀性:

SELECT SUM(it.count) 
FROM characters ch 
LEFT OUTER JOIN items it ON ch.charId=it.owner_id 
WHERE item_id=40001 
ORDER BY SUM(it.count) DESC 
LIMIT 20 

這個查詢有點怪。首先你選擇一個總和(你不是按任何東西分組),那麼你就是通過這個總和來訂購,並將返回的行數限制爲?

此外,你在做一個LEFT OUTER JOIN,但隨後使用WHERE表中的外表,這將導致所有行被刪除,只有一個字符,但沒有項目。

下面的查詢將完成同樣的事情。

SELECT SUM(it.count) 
FROM characters ch 
JOIN items it ON ch.charId=it.owner_id 
WHERE item_id=40001 

現在如果你想超過一個ITEM_ID,你要麼需要兩者的總數:

SELECT SUM(it.count) 
FROM characters ch 
JOIN items it ON ch.charId=it.owner_id 
WHERE item_id IN (40001,40002) 

或者你想爲每個項目總和

SELECT SUM(it.count) 
FROM characters ch 
JOIN items it ON ch.charId=it.owner_id 
GROUP BY item_id 
ORDER BY SUM(it.count) DESC 
LIMIT 20 

你可以改變加入只做幾個項目類型:

SELECT SUM(it.count) 
FROM characters ch 
JOIN items it ON ch.charId=it.owner_id AND it.item_id IN (40001,40002) 
GROUP BY item_id 
ORDER BY SUM(it.count) DESC 
LIMIT 20 
相關問題