【发布时间】:2018-02-13 10:21:37
【问题描述】:
我正在尝试显示橄榄球比赛的详细信息,我想要的详细信息是比赛 ID、比赛日期、比赛时间、主队、客队、主队比分、客队比分。
我需要 SQL 语句来查看比赛日期以计算出分数(因为分数多年来一直在变化)。
以下语句适用于所有以前的评分结构,但当它到达最近的(当前的结束日期为空)时,它会中断。
问题不在于它没有结束日期,因为我有它,所以如果日期为空,它会设置今天的日期,而是它从信息中丢失了日期,我不知道为什么。
SELECT
M.MatchID,
DATE_FORMAT(M.Date, '%d %b %Y'),
TIME_FORMAT(M.time, '%l:%i %p') AS time,
T1.name,
T2.name,
SUM(M.HTries * S.Try) + SUM(M.HConv * S.Conv) + SUM(M.HPT * S.PT) + SUM(M.HPG * S.PG) + SUM(M.HDG * S.DG) AS HScore,
SUM(M.ATries * S.Try) + SUM(M.AConv * S.Conv) + SUM(M.APT * S.PT) + SUM(M.APG * S.PG) + SUM(M.ADG * S.DG) AS AScore,
S.ScoreDateFrom AS ScoreDateFrom,
CASE WHEN NOT S.ScoreDateTo = '0000-00-00' then S.ScoreDateTo ELSE CURDATE()
END AS ScoreDateTo
FROM
scoring S, matches M
LEFT JOIN teams T1
ON T1.TeamID=M.HTeam
LEFT JOIN teams T2
ON T2.TeamID=M.ATeam
WHERE
M.Date >= ScoreDateFrom and M.Date <= ScoreDateTo and M.MatchID = 1;
如果我选择匹配 1,它基于旧的计分结构,我会得到所有正确的信息:
+---------+---------------------------------+---------+-------------+-----------+--------+--------+---------------+-------------+
| MatchID | DATE_FORMAT(M.Date, '%d %b %Y') | time | name | name | HScore | AScore | ScoreDateFrom | ScoreDateTo |
+---------+---------------------------------+---------+-------------+-----------+--------+--------+---------------+-------------+
| 1 | 22 Oct 2016 | 7:35 PM | New Zealand | Australia | 37 | 10 | 2016-05-22 | 2017-07-31 |
+---------+---------------------------------+---------+-------------+-----------+--------+--------+---------------+-------------+
但如果我设置为最近的游戏,我会得到:
+---------+---------------------------------+---------+----------+--------+--------+--------+---------------+-------------+
| MatchID | DATE_FORMAT(M.Date, '%d %b %Y') | time | name | name | HScore | AScore | ScoreDateFrom | ScoreDateTo |
+---------+---------------------------------+---------+----------+--------+--------+--------+---------------+-------------+
| 93 | 11 Feb 2018 | 3:00 PM | Scotland | France | NULL | NULL | NULL | 2018-02-13 |
+---------+---------------------------------+---------+----------+--------+--------+--------+---------------+-------------+
其中包含评分详情的表格如下所示:
+---------+---------------+-------------+------+------+------+------+------+------+---------------------+
| ScoreID | ScoreDateFrom | ScoreDateTo | Try | PT | Conv | PG | DG | Mark | Update_TS |
+---------+---------------+-------------+------+------+------+------+------+------+---------------------+
| 1 | 1977-01-01 | 1992-06-30 | 4 | 4 | 2 | 3 | 3 | 0 | 2017-02-08 17:56:39 |
| 2 | 1992-07-01 | 2016-05-13 | 5 | 5 | 2 | 3 | 3 | 0 | 2018-02-13 01:42:29 |
| 3 | 1971-09-01 | 1976-12-31 | 4 | 4 | 2 | 3 | 3 | 3 | NULL |
| 4 | 2017-08-01 | 0000-00-00 | 5 | 7 | 2 | 3 | 3 | 0 | NULL |
| 5 | 2016-05-14 | 2016-05-21 | 6 | 8 | 2 | 2 | 3 | 0 | NULL |
| 6 | 2016-05-22 | 2017-07-31 | 5 | 5 | 2 | 3 | 3 | 0 | NULL |
+---------+---------------+-------------+------+------+------+------+------+------+---------------------+
如果您能告诉我出了什么问题,不胜感激?
谢谢
【问题讨论】:
-
不确定是不是问题,但请参阅stackoverflow.com/questions/2660497/…
-
感谢您对帖子的修复,我查看了链接,但似乎不是同一个问题。
-
我最初确实首先有匹配项,但它没有工作,所以切换了它们,所以它大部分时间都可以工作。我相信如果这是问题,它根本不会起作用(但我愿意被纠正)。
-
@RBurns,请给我们看一下id=93的评分表记录?