我正在使用以下查询为我提供一组最近 20 场比赛的球队。我想找到他们在过去 20 场比赛中的进球数,并按(进球数,日期)排序结果:
SELECT * FROM (
SELECT *, `against` AS `goalsF` , `for` AS `goalsA`
FROM `matches` , `teams` , `outcomes`
WHERE(
`home_team_id`=7 AND `matches`.away_team_id = `teams`.team_id
OR
`away_team_id`=7 AND `matches`.home_team_id = `teams`.team_id
)
AND `matches`.score_id = `outcomes`.outcome_id
ORDER BY `date` DESC
LIMIT 0 , 20
) res
ORDER BY `goalsF`
问题是:
- 如果我们要查找的球队是主队,我们需要计算“进球数”。
- 如果球队是客队,我们需要计算“进球数”来找到他们的进球数。
所以我需要能够做的是:
if (`home_team_id`=7 AND `matches`.away_team_id = `teams`.team_id)
SELECT *, `for` AS `goalsF` , `against` AS `goalsA`
if (`away_team_id`=7 AND `matches`.home_team_id = `teams`.team_id)
SELECT *, `against` AS `goalsF` , `for` AS `goalsA`
但是,这必须在子集或结果上执行。我不确定这是否可能,但这超出了我对 MYSQL 的了解。
任何帮助将不胜感激。
艾伦。