2013-03-31 125 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 
相关问题