我有一个名为 的表players
,然后是其他名为tries
, conversions
, penalties
,的表dropgoals
。
我需要得到player_id
from players
,然后计算以下内容:
player_id
in的尝试次数tries
player_id
in的转化次数conversions
player_id
in的处罚次数penalties
player_id
in的丢球数dropgoals
这一切都需要一次性完成,因为每场比赛大约有十五名球员,该网站与橄榄球有关。
我尝试了以下方法,它有效:
SELECT players.player_id, players.number, CASE WHEN (COUNT(tries.player_id) = 0) THEN ' ' ELSE COUNT(tries.player_id) END AS nrTries FROM players LEFT JOIN tries ON players.player_id = tries.player_id WHERE players.team_id IS NULL GROUP BY players.player_id ORDER BY players.number
它从players
表中选择所有玩家并计算他们的尝试,但是一旦我将其更改为以下内容,它就会给我一个错误:
SELECT players.player_id, players.number, player.name, CASE WHEN (COUNT(tries.player_id) = 0) THEN ' ' ELSE COUNT(tries.player_id) END AS nrTries FROM players, player LEFT JOIN tries ON players.player_id = tries.player_id WHERE players.player_id = player.player_id AND players.team_id IS NULL GROUP BY players.player_id ORDER BY players.number
它给出了以下错误:
Unknown column 'players.player_id' in 'on clause'
有人可以帮我解决这个问题吗,我已经挣扎了好几天了?
提前致谢
// 编辑:
大家好,我现在觉得很愚蠢,这段代码运行得很好,除了当一个球员在不止一种类型中得分时,比如尝试和转换,或者尝试和点球,它会错误计算每种类型的数量,并且它们是成功的都一样。
假设我的球员进了 1 个点球和 3 个丢球,它输出为 3 个点球和 3 个丢球,我不知道出了什么问题。
这是我的查询:
SELECT players.player_id, players.number, player.name, player.surname,
CASE WHEN (COUNT(tries.player_id) = 0) THEN '& nbsp;' ELSE COUNT(tries.player_id) END AS nrTries,
CASE WHEN (COUNT(conversions.player_id) = 0) THEN '& nbsp;' ELSE COUNT(conversions.player_id) END AS nrConversions,
CASE WHEN (COUNT(dropgoals.player_id) = 0) THEN '& nbsp;' ELSE COUNT(dropgoals.player_id) END AS nrDropgoals,
CASE WHEN (COUNT(penalties.player_id) = 0) THEN '& nbsp;' ELSE COUNT(penalties.player_id) END AS nrPenalties
FROM players
LEFT JOIN tries ON players.player_id = tries.player_id AND tries.game_id = '$game_id'
LEFT JOIN conversions ON players.player_id = conversions.player_id AND conversions.game_id = '$game_id'
LEFT JOIN dropgoals ON players.player_id = dropgoals.player_id AND dropgoals.game_id = '$game_id'
LEFT JOIN penalties ON players.player_id = penalties.player_id AND penalties.game_id = '$game_id'
LEFT JOIN player ON players.player_id = player.player_id
WHERE players.player_id = player.player_id AND players.team_id IS NULL AND players.game_id = '$game_id'
GROUP BY players.player_id ORDER BY players.number
请注意: $game_id 是一个 PHP 变量。
另外:我在 & 和 nbsp; 之间添加了一个空格。否则它不会输出到 SO。
有人可以指出我正确的方向吗?