VOIPプラットフォームで実行されているPHPアプリケーションで生成される特定の「レポート」のトラブルシューティングを試みています(請求関連)。私にこれをするように頼んだ人は「それは以前に働いた」と述べました;)
スローされたMySQLエラー:
1111: Invalid use of group function
クレイジーなことは、それは「以前は機能していました」が、しばらくすると停止し、このバグを引き起こした可能性のあるイベントが発生した場所を特定できません。MYSQLがアップグレードされたのではないかと考えられますか?エラーをグーグルで検索しましたが、明確な答えが見つからないようです。
一見したところ、SQLに何か問題があると思いますか?
SELECT C.ResourceGroupID AS CustomerID, CS.CustomerName, SUM(C.IN_RndDuration/60) AS Minutes, SUM(CASE WHEN (C.OUT_Duration>0 AND C.IN_RndDuration>0) THEN 1 ELSE 0 END) AS Successfull, count(0) AS Attempts
FROM ws_call_current AS C
LEFT JOIN customer_rg AS V_RG ON
V_RG.RGId=C.OtherResourceGroupID AND V_RG.RateTableId IS NOT NULL AND V_RG.Direction='O'
LEFT JOIN customer AS V ON V.CustomerId=V_RG.CustomerId
LEFT JOIN customer_rg AS CS_RG ON CS_RG.RGId=C.ResourceGroupID AND CS_RG.RateTableId IS NOT NULL AND CS_RG.Direction='I'
LEFT JOIN customer AS CS ON CS.CustomerId=CS_RG.CustomerId
WHERE DATE_FORMAT(DATE_ADD(C.SeizeDate, INTERVAL TIME_TO_SEC(C.SeizeTime) SECOND), '%Y-%m-%d %H:%i:00') BETWEEN '2010-10-19 00:00:00' AND '2010-10-19 23:59:59'
AND C.SeizeDate BETWEEN '2010-10-19' AND '2010-10-19'
GROUP BY CS.CustomerName
ORDER BY SUM(C.IN_RndDuration/60) DESC
これはMYSQL3/4用に書かれていると思いますが、まだわかりません。フィードバックをもらいたかっただけです。グーグルの結果から、クエリを?のHaving
代わりに変更することでこれを修正することに成功した人がいることがわかりました。where
わからない。以下に奇妙に見えるものはありますか?