Странная Mysql ошибка 1111, предположительно работала раньше - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь устранить неполадки, связанные с определенным «отчетом», который генерируется в приложении PHP, работающем на платформе VOIP (связанная с выставлением счетов).Человек, который попросил меня сделать это, заявил: «Это работало раньше»;)

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 Я верю, пока не уверен.Просто хотел получить отзыв.По результатам поиска в Google я обнаружил, что некоторым людям удалось исправить это, изменив запрос на Having вместо where?

Не уверен.Что-нибудь выглядит странно ниже?

Ответы [ 2 ]

0 голосов
/ 26 октября 2010

После проверки я обнаружил, что причиной этого было просто несоответствие MySQL. Первоначально код MySQL был написан для 5.0.51a, а работающая версия MySQL (как-то «пыталась» его обновить, была 5.0.21).

Эта версия 'downgrade' была причиной сбоя SQL. Честно говоря, я не знаю, в чем причина, кроме того, что мы установили новую версию MySQL, чтобы просто выполнить тест (на удаленном компьютере), и это решило проблему (указав с основного устройства на резервный сервер MySQL.

Решение этой ошибки: Совместимость версий

0 голосов
/ 19 октября 2010

Попробуйте включить C.ResourceGroupID в ваше заявление group by.Вы должны включить все неагрегированные элементы в ваш выбор в вашей группе по.

Вам не нужно having в приведенном выше коде.

Я не уверен, как это могло работать раньше ...

...