2011-11-28 45 views
2

這是我的時刻了:在一個查詢計數的許多項目

SELECT `p`.`name`, SUM(`count`) FROM `player_items` 
LEFT JOIN `players` `p` ON (`p`.`id` = `player_items`.`player_id`) 
WHERE `itemtype` IN (2148, 2152, 2160) GROUP by `player_id`, `itemtype` 

它退出的球員的名字和項目類型的ID 2148,2152的SUM,2160

我需要重寫該查詢,以便將選擇的項目數爲每個ID,這是結果應該什麼樣子:

| NAME | ITEM | COUNT | 
| Player | 2148 | 10 | 
| Player | 2152 | 760 | 
| Player | 2160 | 0  | 

| NAME | ITEM | COUNT | 
| Player1 | 2148 | 890 | 
| Player1 | 2152 | 5560 | 
| Player1 | 2160 | 2584 | 

結構:

Table name = player_items 
ITEM ID(2148, 2152, 2160) - itemtype 
ITEM COUNT - count. 

請記住,每個項目的ID例如可以具有其他「COUNT」的值在player_items表一個球員會像:

PLAYER_NAME | 2148 | 10 
PLAYER_NAME | 2148 | 4 
PLAYER_NAME | 2148 | 4 
PLAYER_NAME | 2152 | 60 
PLAYER_NAME | 2152 | 20 
PLAYER_NAME | 2160 | 100 

讓我知道,如果你沒有得到任何東西。

回答

0

我不太清楚你的問題是什麼。你不只是想返回項目ID(稱爲itemtype)?

SELECT 
    `p`.`name` AS `Name`, 
    `i`.`itemtype` AS `Item`, 
    SUM(`i`.`count`) AS `Count` 
FROM 
    `player_items` AS `i` 
LEFT JOIN 
    `players` AS `p` 
    ON 
     (`p`.`id` = `i`.`player_id`) 
WHERE 
    `i`.`itemtype` IN (2148, 2152, 2160) 
GROUP BY 
    `i`.`player_id`, 
    `i`.`itemtype` 

這是一個社區wiki,因此如果需要的話可以更正。

+0

此外,你可能想要一個內部聯接,除非你有失蹤球員 – KCD