2013-07-25 38 views
0

我在這裏面臨一個問題:當運行下面的查詢時,我只得到一行,即使它應該返回「每個在皮卡,他的暱稱,他玩的團隊中發現的玩家,他的ID和總金額table作爲一個結果返回多行的MySQL連接表,SUM()med up?

爲了說明它更具可讀性可以看出,如::

pickup_id  player_id weapon_id kills teamkills 
logfilename1 0:0:1  Shotgun  12  2 
logfilename1 0:0:1  RPG   19  0 
logfilename1 0:0:2  Grenade  5  8 
殺死他皮卡(匹配)」

SELECT alias.name alias, team.name team, sid.steam_id steam_id, 
     SUM(kills) kills_total 
FROM pickup 
    JOIN player ON player.pickup_id = pickup.id 
    JOIN team ON player.team_id = team.id 
    JOIN sid ON player.sid_id = sid.id 
    JOIN alias ON player.alias_id = alias.id 
    JOIN weapon_stats_1 ws1 ON ws1.pickup_id = pickup.id AND ws1.player_id = player.id 
WHERE pickup.logfile_name = 'logfilename' 

weapon_stats_1表看起來期間犯

我想要做的是通過使用SUM()將總計殺死並將其作爲結果列添加到上面的查詢中。在這個例子中,它應該返回類似的東西來:

alias  team steam_id kills_total 
nickname1 Red 0:0:1  31 
nickname2 Blue 0:0:2  5 

當我刪除了JOIN武器[...]行查詢返回正是我希望它 - 在這種特殊情況下爲皮卡.logfile_name =「日誌文件名」,看起來像:

result

我不明白我在做什麼錯,爲什麼查詢只返回ONE排(一名球員)當我加入weapon_stats_1 ws1 [...]。我如何實現我想要做的事情?

問候

+0

怎麼樣GROUP BY? – Evgeny

+0

非常感謝,如果我3小時前才知道的話。現在就像一個魅力一樣,只需追加'GROUP BY player.id,pickup .id',它會像我想要的那樣返回所有內容。 – phew

回答

0
SELECT alias.name alias, team.name team, sid.steam_id steam_id, 
     SUM(kills) kills_total 
FROM pickup 
    JOIN player ON player.pickup_id = pickup.id 
    JOIN team ON player.team_id = team.id 
    JOIN sid ON player.sid_id = sid.id 
    JOIN alias ON player.alias_id = alias.id 
    LEFT JOIN weapon_stats_1 ws1 ON ws1.pickup_id = pickup.id AND ws1.player_id = player.id 
WHERE pickup.logfile_name = 'logfilename' GROUP BY player.id, pickup.id 

學分@otzy