我有一个在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在/srv/www/htdocs/capsdev/includs/phpdbform_db_odbc.php的第104行SELECT((SUM(CASE WHEN I.InCompliance=1 AND FI.Status='C'THEN 1 ELSE 0 END)*100)/(SUM2014-3-01'AND I.belongsToFacility=F.FacilityID AND I.FacInspId=FI.FacInspId AND F.DistrictID=1警告:odbc_fetch_array()要求参数1为资源,布尔值在第114行的/srv/www/htdocs/capsdev/includs/phpdbform_db_odbc.php中给定
任何帮助都将不胜感激。
谢谢你,
Daniel
尝试使用显式联接而不是隐式联接。
类似于:
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