0

我有在我的 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]游标未声明。,SQLExecDirect 中的 SQL 状态 37000 在 /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 AND I.FacInspId=FI。 FacInspId AND F.DistrictID=1 警告:odbc_fetch_array() 期望参数 1 是资源,在第 114 行的 /srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php 中给出的布尔值

任何帮助将非常感激。

谢谢,

丹尼尔

4

1 回答 1

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 
于 2013-02-12T13:47:20.997 回答