Странная Mysql ошибка 1111, предположительно работала раньше

0

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

Ошибка MySQL: 1111: Invalid use of group function

Сумасшедшая вещь, она "работала до", но через некоторое время остановилась, они не могут указать, какое событие произошло, что могло бы создать эту ошибку. Одна мысль, возможно, была обновлена ​​MYSQL? Я ошибся в Google и не могу найти четкого ответа.

На первый взгляд вы, ребята, видите что-то не так в 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

Это написано для MYSQL 3/4, я считаю, еще не уверен. Просто хотел получить обратную связь. Из результатов Google я обнаружил, что некоторые люди добились успеха, исправив это, изменив запрос как Having вместо where?

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

Теги:
mysql-error-1111

2 ответа

0
Лучший ответ

То, что я нашел после обзора, заключается в том, что причиной этого было просто несоответствие MySQL. Первоначально код MySQL был написан для версии 5.0.51a, а работающая версия MySQL (как-то "попытка" была обновлена, была 5.0.21).

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

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

0

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

Вам не нужно использовать having в приведенном выше коде.

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

  • 0
    В MySQL это настройка конфигурации .
  • 0
    Интересно, я этого не знал. @Jakub Ваш БД настроен на работу так?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню