Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
如何使用SQL和PHP获取排序组中的_Php_Sql - Fatal编程技术网

如何使用SQL和PHP获取排序组中的

如何使用SQL和PHP获取排序组中的,php,sql,Php,Sql,情景: 我有一张游戏统计表,叫做gamesstats 我得到了一支球队,重要的是id,联赛和塞萨森 现在,我可以用我的比赛统计数据来检查球队打了哪些比赛,只询问那些联赛和赛季都在哪里,主队id或客队id是我得到的球队id 从这一点上,我可以得到该队比赛的情况,并分别询问主场和客队的统计数据。然后我对他们进行平均,了解这支球队的情况 现在的问题是: 如何构建这三个数组:一个简单的团队平均值数组,完成,一个简单的联盟平均值数组,只是不限制团队id,还有一个特定参数的联盟内团队数组,就像所有团队在2分

情景:

我有一张游戏统计表,叫做gamesstats

我得到了一支球队,重要的是id,联赛和塞萨森

现在,我可以用我的比赛统计数据来检查球队打了哪些比赛,只询问那些联赛和赛季都在哪里,主队id或客队id是我得到的球队id

从这一点上,我可以得到该队比赛的情况,并分别询问主场和客队的统计数据。然后我对他们进行平均,了解这支球队的情况

现在的问题是:

如何构建这三个数组:一个简单的团队平均值数组,完成,一个简单的联盟平均值数组,只是不限制团队id,还有一个特定参数的联盟内团队数组,就像所有团队在2分投篮中的平均值在联盟中排名第四

一点sql以便您了解它的外观:

SELECT \"All Games\" as Flag, count(*) as Games, avg(s.P2M) as P2M, avg(s.P2A) as P2A,  100*avg(s.P2M)/avg(s.P2A) as P2P,
        avg(s.P3M) as P3M, avg(s.P3A) as P3A,  100*avg(s.P3M)/avg(s.P3A) as P3P,
        avg(s.FTM) as FTM, avg(s.FTA) as FTA,  100*avg(s.FTM)/avg(s.FTA) as FTP,
        avg(s.OFFENSE) as OFFENSE, avg(s.DEF) as DEF, avg(s.TOT) as TOT, 
        avg(s.AST) as AST, avg(s.TO) as TurnO, avg(s.ST) as ST, avg(s.FV) as FV, avg(s.CM) as CM, avg(s.PTS) as PTS,
        (avg(s.TOT) + avg(s.AST) + avg(s.ST) + avg(s.PTS) + avg(s.P2M) + avg(s.P3M) + avg(s.FTM) + avg(s.RV) + avg(s.FV))
        - (avg(s.TO) + avg(s.P3A) + avg(s.P3A) + avg(s.FTA) + avg(s.AG) + avg(s.CM)) as EFF
        FROM gamesstats AS gs, stats AS s
        WHERE gs.$homeOrVisitor = s.ID
        AND gs.HomeTeamID = $ESCteam
        AND gs.SeasonStart = $ESCseason
        AND gs.LeagueID = $ESCleague
我更喜欢一个快速的解决方案,因为我们谈论的是30k+统计数据的大型表格。
如果需要,将进行编辑

对不起,我不太明白你真正想要什么,因为你说一切都很容易做到。但是我可以给你一些建议,让你的SQL更快。您不应该在SQL中使用这么多AVG调用。只需选择您需要的所有不同的平均值,然后在PHP中计算所有其他值。例如,您应该在SQL中选择avgs.P3M作为P3M,avgs.P3A作为P3A,但将P3P计算为$row['P3P']=100*$row['P3M']/$row['P3A'];在php中,以及所有的平均总和。PHP比MySql更易于扩展,而且工作速度也更快


UPD:如果您询问如何通过某个字段获得选择中的行位置,只需选择该字段值较大的所有行的计数并加1。

并非所有操作都很容易完成,只需做两件事。我还是不能做第三件事,在联盟中。这应该会给你一个想法:从游戏状态中选择COUNT*SELECT AVGsomething作为avg_sMathing,其中LeagueId=$ESCleague和SeasoneStart=$ESCseason GROUP BY HomeTeamId作为tbl,其中avg_sMathing>从游戏状态中选择AVGsomething,其中LeagueId=$ESCleague和SeasoneStart=$EscSeasonal和HomeTeamId=$ESCteam;如何选择所有不同的平均值?那对我有帮助。