Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从成绩表生成体育联赛表_Php_Mysql_Select_Join_Count - Fatal编程技术网

Php 从成绩表生成体育联赛表

Php 从成绩表生成体育联赛表,php,mysql,select,join,count,Php,Mysql,Select,Join,Count,我有一张表格,里面有联赛中所有球队的赛程和结果。我正试图根据结果生成一个排名表。我以为它可以工作,但在手动计算排名时,它与MySql输出的表不匹配 $query_away = " Select teams.team_name, SUM(if(fixtures.away_team_score > fixtures.home_team_score,3,0)) AS W, SUM(IF(fixtures.away_team_score = fixtures.home_team_s

我有一张表格,里面有联赛中所有球队的赛程和结果。我正试图根据结果生成一个排名表。我以为它可以工作,但在手动计算排名时,它与MySql输出的表不匹配

$query_away = " Select teams.team_name,
    SUM(if(fixtures.away_team_score > fixtures.home_team_score,3,0)) AS W,
    SUM(IF(fixtures.away_team_score = fixtures.home_team_score,1,0)) AS D,
    SUM(IF(fixtures.away_team_score < fixtures.home_team_score,0,0)) AS L
FROM teams
 INNER JOIN fixtures ON teams.team_name = fixtures.home_team 
 GROUP BY fixtures.home_team
 ORDER BY W DESC";

如果同时在主场和客场获胜,此查询应获得三分。打成平局只需要一笔钱,因为不管球队是主场还是客场。对于损失,实际上不需要求和,因为你只需要加上一堆零

SELECT teams.team_name,
    SUM(if(teams.team_name = fixtures.away_team 
        AND fixtures.away_team_score > fixtures.home_team_score,3,0)) 
    + SUM(if(teams.team_name = fixtures.home_team 
        AND fixtures.home_team_score > fixtures.away_team_score,3,0)) AS W,
    SUM(IF(fixtures.away_team_score = fixtures.home_team_score,1,0)) AS D,
    0 AS L
FROM teams
INNER JOIN fixtures ON teams.team_name = fixtures.home_team 
    OR teams.team_name = fixtures.away_team
GROUP BY teams.team_name
ORDER BY W DESC

使用示例数据会有所帮助。您正在加入teams.team\u name=fixtures.home\u team上的teams表。这意味着当你做
客场球队得分>主场球队得分
时,你将为输球的球队增加3分。@Dagon fiddle补充说,请看问题。@Don'tPanic你能解释一下吗?我想如果你改为在队名=客场球队中加入,你应该会得到你期望的结果。
SELECT teams.team_name,
    SUM(if(teams.team_name = fixtures.away_team 
        AND fixtures.away_team_score > fixtures.home_team_score,3,0)) 
    + SUM(if(teams.team_name = fixtures.home_team 
        AND fixtures.home_team_score > fixtures.away_team_score,3,0)) AS W,
    SUM(IF(fixtures.away_team_score = fixtures.home_team_score,1,0)) AS D,
    0 AS L
FROM teams
INNER JOIN fixtures ON teams.team_name = fixtures.home_team 
    OR teams.team_name = fixtures.away_team
GROUP BY teams.team_name
ORDER BY W DESC