2013-02-11 3 views
0

나는이 내 PHP 코드의 실행이 쿼리는 MSSQL 관리 스튜디오에서 나를 위해 잘 실행커서는 PHP는 ODBC 드라이버 (쿼리 SQL 관리 스튜디오에서 작동)에 오류가 선언되지 않았습니다

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 

하지만이 오류가 발생합니다.

Warning: odbc_exec(): SQL error: [unixODBC][FreeTDS][SQL Server]The cursor was not declared., SQL state 37000 in SQLExecDirect in /srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php on line 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))) 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 Warning: odbc_fetch_array() expects parameter 1 to be resource, boolean given in /srv/www/htdocs/capsdev/includes/phpdbform_db_odbc.php on line 114

어떤 도움을 주시면 감사하겠습니다.

답변

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