我在表上命名爲players
,然後其他表名爲tries
,conversions
,penalties
, dropgoals
。在conversions
MySQL - 需要幫助計數id與其他表中的某些值相對應
player_id
在tries
player_id
的
- 嘗試次數爲
player_id
的:我需要從
players
的player_id
,再算上以下penalties
- 下降目標數
player_id
indropgoals
而這一切都需要一次性完成,因爲每場比賽都有大約15名球員,該網站涉及橄欖球。
我曾嘗試以下,其工作原理:
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個dropgoals,輸出爲3罰分和3個dropgoals,我無法弄清楚什麼是錯誤的。
這裏是我的查詢:
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。
有人能請我指出正確的方向嗎?
爲什麼你不遵循以前的建議? – hobodave 2009-07-21 16:08:47
我的第三個回答不包括這個嗎?你能否澄清你的數據和錯誤,因爲我不瞭解你的進一步編輯。 – cletus 2009-07-22 10:40:58