0

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

わからない。以下に奇妙に見えるものはありますか?

4

2 に答える 2

0

レビューの結果、これの原因は単にMySQLの不一致であることがわかりました。当初、MySQLコードは5.0.51a用に記述されており、実行中のMySQLバージョン(アップグレードを試みたのは5.0.21でした)。

このバージョンの「ダウングレード」がSQLの失敗の原因でした。正直なところ、(リモートボックスで)テストを行うために新しいバージョンのMySQLをインストールし、問題を解決した(プライマリボックスからバックアップMySQLサーバーを指す)以外の原因はわかりません。

このエラーの解決策: バージョンの互換性

于 2010-10-26T13:00:06.293 に答える
0

ステートメントに含めてみてC.ResourceGroupIDください。group byによるグループの選択に、すべての非集計アイテムを含める必要があります。

having上記のコードでは、は必要ありません。

以前はどうやって機能したのかわかりません...

于 2010-10-19T14:55:15.597 に答える