我需要一些帮助来制作梯子。
继承人的信息:
表:
cricket_teams(id, name)
cricket_matches(id, hometeam, awayteam, format, season, winner)
cricket_teamperformance(id, matchid, team, innings, score)
(表中还有其他字段对于此查询是不必要的)
我需要得到它,以便它给我胜利,平局(获胜者 = 0),失败,FIP(当一支球队在第一局得分更多时),BP(在这种情况下只是获胜)和积分(粗体完成)。我有一个疑问,但我有一些问题。我不知道如何计算平局和失利,也没有赢得一场比赛的球队。这是我所拥有的:
SELECT b.team,
b.name,
COUNT(c.wins) as W,
count(b.name)*2 as FIP,
COUNT(c.wins)*2 as BP,
COUNT(c.wins)*4+(count(b.name)*2)+(COUNT(c.wins)*2) as Pts
FROM (SELECT a.name, a.score, a.matchid, a.team
FROM (SELECT cricket_teams.name, score, matchid, team
FROM `cricket_teamperformance`
LEFT JOIN cricket_teams
ON cricket_teamperformance.team = cricket_teams.id
INNER JOIN cricket_matches
ON cricket_teamperformance.matchid = cricket_matches.id
WHERE cricket_matches.format=3
AND cricket_teamperformance.innings = 1
AND cricket_matches.season = 1
OR cricket_matches.format=3
AND cricket_teamperformance.innings = 2
AND cricket_matches.season = 1
ORDER BY matchid, score DESC) as a
GROUP BY matchid) as b,
(SELECT COUNT(winner) as wins, cricket_teams.name
FROM cricket_matches
LEFT JOIN cricket_teams ON cricket_matches.winner = cricket_teams.id
WHERE format = 3
AND season = 1) as c
GROUP BY b.name
ORDER BY Pts DESC
这将返回:
team name W FIP BP Pts
4 Chargers 2 4 4 16
2 Hawks 1 2 2 8
1 Ninjas 1 2 2 8
它需要看起来像这样(P 是比赛,D 是平局,L 是输球):
team name P W D L FIP BP Pts
4 Chargers 2 2 0 0 4 4 16
2 Hawks 2 1 0 1 2 2 8
1 Ninjas 2 1 0 1 2 2 8
3 Wolves 2 0 0 2 0 0 0
还有另一支球队,狼队,他们两场比赛都没有赢过。我还需要找回那些平局和损失。提前致谢
*这是多日板球比赛,这意味着球队每场比赛最多可以有两局。SQL 小提琴:http ://sqlfiddle.com/#!2/26e41/2