- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在足球环境中,我想显示当前的排名。含义:每队的得分和目标。相关表格类似于下表(已简化)。
uid (PK) hometeamid roadteamid
------------------------------------------------------------------
uid (PK) hometeamscore roadteamscore resulttype (45min, 90min, ..)
-------------------------------------------------------------------
uid (PK) name shortname icon
------------------------------------------------------------------
现在我不明白如何在一个查询中写入排名。我设法编写了一个查询,该查询仅返回“主场比赛”-排名。我想这是最简单的部分。无论如何,这是它的样子:
SELECT ht.name,
Count(*) As matches,
SUM(res.hometeamscore) AS goals,
SUM(res.roadteamscore) AS opponentgoals,
SUM(res.hometeamscore - res.roadteamscore) AS goalDifference,
SUM(res.hometeamscore > res.roadteamscore) * 3 + SUM(res.hometeamscore = res.roadteamscore) As Points
FROM league_league l
JOIN league_gameday gd
ON gd.leagueid = l.uid
JOIN league_match m
ON m.gamedayid = gd.uid
JOIN league_result res
ON res.matchid = m.uid
AND res.resulttype = 2
JOIN league_team ht
ON m.hometeamid = ht.uid
Where l.uid = 1
Group By ht.uid
Order By points DESC, goalDifference DESC
任何想法如何修改它,它会回家 - 和公路游戏将不胜感激。
非常感谢,
罗宾
最佳答案
创建 View 。如果您的数据不经常更改并且您需要性能,请创建一个或多个预计算表。
MySQL 中的 View 只是从 SELECT 查询动态计算的伪表。使用问题中的 SQL,您可以在家中创建团队结果的 View :CREATE VIEW homegames AS SELECT ...
然后对公路比赛做同样的事情。然后很容易在第三个 View 中综合两个 View (您只需要汇总列)。
View 至少有一个缺陷:它们很慢。基于 View 构建的 View 就像使用复杂的子查询,而 MySQL 在这方面相当糟糕。我认为这对您来说不是问题,因为您可能最多要处理数百个游戏。但是,如果您发现这些 View 的查询速度太慢,并且您不使用任何可以缓解这种情况的缓存,那么请使用简单的表而不是 View 。当然,您需要使它们保持同步。您可以在每次有新游戏时TRUNCATE
和INSERT INTO homegames SELECT ...
,或者您可以更聪明地UPDATE
表格.两者都是正确的,具体取决于您的需要。
关于mysql - 足球 SQL 查询 Home- 和 Roadteam 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7386846/
在足球环境中,我想显示当前的排名。含义:每队的得分和目标。相关表格类似于下表(已简化)。 匹配表 uid (PK) hometeamid roadteamid ---------
我是一名优秀的程序员,十分优秀!