gpt4 book ai didi

PHP 比较运算符在 MySQL streak 查询中不起作用

转载 作者:行者123 更新时间:2023-11-29 22:03:32 26 4
gpt4 key购买 nike

在尝试计算单个球员的最长连续进球数时,我遇到了一个障碍,>= PHP 运算符未按预期执行。

数据以表格形式呈现如下:

     date         gls   ------------------------  1980-08-16       2     1980-08-19       1    1980-08-23       1  1980-08-26       0  1980-08-30       1  1980-09-06       2  1980-09-13       0... and so on    

The PHP query I am using is as follows:

SELECT gls, MIN(date) as StartDate, MAX(date) as EndDate, COUNT(*) as Games 
FROM (SELECT gls, date,
(SELECT COUNT(*)
FROM goalsengine G
WHERE G.gls <> GE.gls
AND G.date <= GE.date) as RunGroup
FROM goalsengine GE) A
WHERE gls>='1'
GROUP BY gls, RunGroup
ORDER BY Games

我以这种方式形成查询,因为我相信 >= 会统计该球员在一场比赛中取得一个或多个进球的连续得分。例如,从上表中,前三个条目代表三场比赛的得分。

相反,查询返回连续进球数,但仅在进球数达到一定数量的情况下,即尽管在前三场比赛中进球,但返回连续进球数时,第一个条目(进了两个球,而不是一个)将被忽略。

为了返回结果,我使用以下命令:

while($row=mysql_fetch_assoc($result))  
{
{$startrundate = date("d F Y",strtotime($row['StartDate']));}
{$endrundate = date("d F Y",strtotime($row['EndDate']));}
echo "<tr>";
echo "<td>".$row['Games']."</td>";
echo "<td class='tableprofile' style='text-align:right;'>".$startrundate." - ".$endrundate."</td>";
echo "</tr>";
$rowCount += 1;
}

相比之下,WHERE gls='0' 给了我想要的非进球连续得分。我觉得我可能忽略了一些简单但看不到的东西。

最佳答案

我已经设法找到了解决这个特定问题的方法,并且据我所知,在手动计算出一些原始数据后,它是有效的。

SELECT gls, MIN(date) as StartDate, MAX(date) as EndDate, COUNT(*) as Games 
FROM (SELECT gls, date,
(SELECT COUNT(*)
FROM goalsengine G
WHERE IF(G.gls IN ('1','2','3','4','5'),1,0) <> IF(GE.gls IN ('1','2','3','4','5'),1,0)
AND G.date <= GE.date) as RunGroup
FROM goalsengine GE) A
WHERE gls IN ('1','2','3','4','5') GROUP BY IF(bg IN ('1','2','3','4','5'),1,0), RunGroup ORDER BY Games DESC LIMIT 3");

我承认它不太漂亮,但它现在已经可以完成工作了。我在计算中选择了 5,因为这是该数据集单场比赛的最大进球数。

关于PHP 比较运算符在 MySQL streak 查询中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com