【发布时间】:2013-07-25 21:55:52
【问题描述】:
我在这里遇到了一个问题:运行以下查询时,我只返回一行,即使它应该返回“在皮卡中找到的每个玩家、他的昵称、他效力的球队、他的 ID 和总金额他在一次比赛(比赛)中所杀的人”
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 表看起来:
为了说明它更具可读性,可以这样看:
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
我想要做的是通过使用 SUM() 将其汇总来获取 kills 的总数,并将其作为结果列添加到上面的查询中。对于这个例子,它应该返回类似于:
alias team steam_id kills_total
nickname1 Red 0:0:1 31
nickname2 Blue 0:0:2 5
当我删除 JOIN Weapon[...] 行时,查询会返回我想要的结果 - 在这种特定情况下为 pickup.logfile_name = 'logfilename' 看起来像:
我不明白我做错了什么以及为什么当我JOIN weapon_stats_1 ws1 [...] 时查询只返回ONE 行(一个玩家)。我如何实现我想要做的事情?
问候
【问题讨论】:
-
非常感谢,如果我在 3 小时前才知道这一点。现在就像一个魅力,只需附加 `GROUP BY player.id,pick.id` 并返回我想要的所有内容。
标签: mysql join many-to-many sum rows