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]カーソルが宣言されていません。/srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php 行 104 の SQLExecDirect で SQL 状態 37000 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))) として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 警告: 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 に答える