我目前正在为每个游戏创建2行数据,如下所示。然后我可以创建SQL代码来生成W,L,PF,PA和diff列,如图所示。有没有人知道如何通过输入一个游戏结果来创建相同的数据?
感谢。
id | game | team1 | team2 | score1 | score2 | gameset | diff
--------------------------------------------------------------------
1 | 1 | Reagan | Jefferson | 43 | 48 | 0 | -5
2 | 1 | Jefferson | Reagan | 48 | 43 | 1 | 5
-
id | team | win | loss | PF | PA | diff
-----------------------------------------------
1 | Jefferson | 1 | 0 | 48 | 43 | 5
2 | Reagan | 0 | 1 | 43 | 48 | -5
SQL CODE:
$sql = 'SELECT id, team1, Sum(diff) as tdiff,
Sum(If(score1>score2,2,0)) + Sum(If(score1=score2,1,0)) +
Sum(If(score1+score2=0,-1,0)) AS Pts,
Sum(If(score1>score2,1,0)) AS Wins,
Sum(If(score1<score2,1,0)) AS Losses,
Sum(If(score1+score2=0,-1,0)) + Sum(If(score1=score2,1,0)) AS Ties,
Sum(score2) AS Allowed, Sum(score1) AS Scored
FROM database
GROUP BY team1 ORDER BY Pts DESC, Allowed ASC, Scored DESC, team1 ASC';
答案 0 :(得分:1)
您可以使用两个查询的UNION执行此操作。但是,我不清楚结果中id
列应该是什么,所以我把它排除了。赢得2分,平局1分,亏损0分是不是更常见的?你的公式似乎没有得分没有得分。 UNION指定两个分数,即“团队得分”或t_score
,以及“对手得分”或o_score
。它有效地为database
表中的每一行创建了两行(更常规地命名为game_results
- 'database'应该保留用于表的集合,而不是单个表。) / p>
SELECT team, SUM(diff) AS tdiff,
SUM(IF(t_score > o_score, 2, 0)) +
SUM(IF(t_score = o_score, 1, 0)) +
SUM(IF(t_score + o_score =0, -1, 0)) AS Pts,
SUM(IF(t_score > o_score, 1, 0)) AS Wins,
SUM(IF(t_score < o_score, 1, 0)) AS Losses,
SUM(IF(t_score + o_score = 0, -1, 0)) +
SUM(IF(t_score = o_score, 1, 0)) AS Ties,
SUM(o_score) AS Allowed,
SUM(t_score) AS Scored
FROM (SELECT team1 AS team, game, 'H' AS home_away,
score1 AS t_score, score2 AS o_score
FROM database
UNION ALL
SELECT team2 AS team, game, 'A' AS home_away,
score2 AS t_score, score1 AS o_score
FROM database
) AS R
GROUP BY team ORDER BY Pts DESC, Allowed ASC, Scored DESC, team ASC;
答案 1 :(得分:0)
这完全是我需要的乔纳森!让我走上正轨并开始工作!更新后的代码如下
SELECT团队,SUM(t_score-o_score)为tdiff,
SUM(IF(t_score&gt; o_score,2,0))+
SUM(IF(t_score = o_score,1,0))+
SUM(IF(t_score + o_score = 0,-1,0))AS Pts,
SUM(IF(t_score&gt; o_score,1,0))AS Wins,
SUM(IF(t_score&lt; o_score,1,0))AS损失,
SUM(IF(t_score + o_score = 0,-1,0))+
SUM(IF(t_score = o_score,1,0))AS Ties,
SUM(o_score)AS允许,
SUM(t_score)AS得分
FROM(SELECT id,diff,team1 AS team,game,'H'AS home_away,
得分1 AS t_score,得分2 AS o_score
来自mn_alldistrictgames
UNION ALL
SELECT id,diff,team2 AS团队,游戏,'A'AS home_away,
得分2 AS t_score,得分1 AS o_score
来自mn_alldistrictgames
)AS R
GROUP BY团队ORDER BY Pts DESC,允许ASC,得分DESC,ASC团队