0
在試圖計算單個玩家最長的射門得分時,我碰到了一個絆腳石,>=
PHP運算符沒有按預期執行。PHP比較運算符不能在MySQL條紋查詢中工作
的數據在表格中顯示如下:
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
我使用的PHP查詢如下:
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'
是給我想要的不進球的條紋。我覺得我可能忽視了一些直截了當的東西,但看不到它。
只有一個建議,但你有沒有考慮在GROUP BY之後使用HAVING來過濾你的'gls'..類似於'GROUP BY gls,RunGroup HAVING gls> = 1 ORDER BY Games' – MaggsWeb
PHP代碼在哪裏?再問一下? – Barmar
我沒有考慮過@MaggsWeb,但它對輸出沒有影響。 –