Zend Framework 1.12를 사용하여 MSSQL 2008 서버에 액세스하고 있습니다. FreeTDS를 데이터베이스 드라이버로 사용하고 있습니다.Zend DB에서 MS SQL에 대한 에뮬레이션 제한 및 오프셋이 발생하지 않습니다.
저는 다음 쿼리를 생성하기 위해 Zend_Db를 사용하고 있습니다.
$obj_sel = $obj_db
-> select()
-> from (array ('ps' => 'ProductStock'), array ('PLU', 'stock' => 'SUM(ps.stock)'))
-> join (array ('pc' => 'ProductCatalogue'), 'ps.PLU = pc.PLU', NULL)
-> join (array ('gl' => 'Gemini_Location'), 'ps.Location = gl.LocationID', array ('LocationID'))
-> where ('ps.status = 1')
-> where ('ps.PLU IS NOT NULL');
> where ('pc.rootPLU >= ?', $this -> int_start_rootplu);
-> group ('ps.PLU')
-> group ('gl.LocationID')
-> order (array ('ps.PLU', 'gl.LocationID'));
실행하고 실행하면 쿼리가 정상적으로 작동하고 올바르게 작동하는 것으로 나타납니다.
SELECT "ps"."PLU", SUM(ps.stock) AS "stock", "gl"."LocationID" FROM "ProductStock" AS "ps"
INNER JOIN "ProductCatalogue" AS "pc" ON ps.PLU = pc.PLU
INNER JOIN "Gemini_Location" AS "gl" ON ps.Location = gl.LocationID WHERE (ps.status = 1) AND (ps.PLU IS NOT NULL) AND (pc.rootPLU >= 93838) GROUP BY "ps"."PLU",
"gl"."LocationID" ORDER BY "ps"."PLU" ASC, "gl"."LocationID" ASC
그러나 나는과 같이 쿼리에 오프셋을 제한하거나 추가 할 때 :
$obj_sel = $obj_db
-> select()
-> from (array ('ps' => 'ProductStock'), array ('PLU', 'stock' => 'SUM(ps.stock)'))
-> join (array ('pc' => 'ProductCatalogue'), 'ps.PLU = pc.PLU', NULL)
-> join (array ('gl' => 'Gemini_Location'), 'ps.Location = gl.LocationID', array ('LocationID'))
-> where ('ps.status = 1')
-> where ('ps.PLU IS NOT NULL');
> where ('pc.rootPLU >= ?', $this -> int_start_rootplu);
-> group ('ps.PLU')
-> group ('gl.LocationID')
-> order (array ('ps.PLU', 'gl.LocationID'))
-> limit (1000,2000);
내가 SQL 서버가 실행을 거부 다음 쿼리를 얻을 수 있습니다. 나는 TOP 기술이 옳다고 MySQL의 또는 포스트 그레스는 내가 생각해야 할거야와 함께 이대로가 MSSQL과 같은 익숙하지 않다
SQLSTATE[HY000]: General error: 4104 General SQL Server error: Check messages from the SQL Server [4104] (severity 16) [(null)]
:
SELECT * FROM (SELECT TOP 1000 * FROM (SELECT TOP 3000 "ps"."PLU", SUM(ps.stock) AS "stock", "gl"."LocationID" FROM "ProductStock" AS "ps"
INNER JOIN "ProductCatalogue" AS "pc" ON ps.PLU = pc.PLU
INNER JOIN "Gemini_Location" AS "gl" ON ps.Location = gl.LocationID WHERE (ps.status = 1) AND (ps.PLU IS NOT NULL) AND (pc.rootPLU >= 93838) GROUP BY "ps"."PLU",
"gl"."LocationID" ORDER BY "ps"."PLU" ASC, "gl"."LocationID" ASC) AS inner_tbl ORDER BY "ps"."PLU" , "gl"."LocationID" DESC) AS outer_tbl ORDER BY "ps"."PLU" , "gl"."LocationID" asc
는 나는 다음과 같은 오류가 발생합니다 . 그러나 SQL Zend DB가 여기에서 생성하는 것은 무엇이든간에 올바르지 않습니다.
Zend DB의 알려진 문제입니까? 그렇다면 어떻게 해결할 수 있습니까?