курсор не был объявлен ошибкой с драйвером php odbc (запрос работает в студии управления sql)

У меня есть этот запрос, который выполняется в моем PHP-коде:

SELECT ((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C' THEN 1 ELSE 0 END)*100) / (SUM(CASE WHEN FI.Status='C' THEN 1 ELSE 0 END))) as result 
FROM tbl_Inspection I,tbl_Facility F,tbl_FacilityInspection FI 
WHERE I.InspectionDate >= '2013-2-01' 
AND I.InspectionDate < '2014-3-01' 
AND I.belongsToFacility=F.FacilityID 
AND I.FacInspId=FI.FacInspId 
AND F.DistrictID=1 

он отлично работает для меня в студии управления mssql, но я получаю эту ошибку

Предупреждение: odbc_exec (): ошибка SQL: [unixODBC] [FreeTDS] [SQL Server] Курсор не был объявлен. Состояние SQL 37000 в SQLExecDirect в /srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php в строке 104 SELECT ((SUM (CASE WHEN I.InCompliance = 1 AND FI.Status = 'C' THEN 1 ELSE 0 END) * 100) / (SUM (CASE WHEN FI.Status = 'C' THEN 1 ELSE 0 END))) как результат ОТ tbl_Inspection I, tbl_Facility F, tbl_FacilityInspection FI, ГДЕ I.InspectionDate> = '2013-2-01' AND I.InspectionDate ‹'2014-3-01' AND I.belongsToFacility = F.FacilityID И I.FacInspId = FI. FacInspId AND F.DistrictID = 1 Предупреждение: odbc_fetch_array () ожидает, что параметр 1 будет ресурсом, логическим значением, заданным в /srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php в строке 114

Любая помощь приветствуется.

Спасибо,

Даниэль


person dsauerbrun    schedule 11.02.2013    source источник


Ответы (1)


Попробуйте использовать явные, а не неявные соединения.

Что-то вроде:

SELECT ((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C' THEN 1 ELSE 0 END)*100) / (SUM(CASE WHEN FI.Status='C' THEN 1 ELSE 0 END))) as result 
FROM tbl_Inspection I
inner join tbl_Facility F
on I.belongsToFacility=F.FacilityID  
inner join tbl_FacilityInspection FI 
on I.FacInspId=FI.FacInspId 
WHERE I.InspectionDate >= '2013-2-01' 
AND I.InspectionDate < '2014-3-01' 
AND F.DistrictID=1 
person DMK    schedule 12.02.2013