带启动和限制的PHP mssql查询 - 追加查询问题

问题描述:

我通常在PHP/MySQL中编写代码,但对于此项目必须使用MSSQL。带启动和限制的PHP mssql查询 - 追加查询问题

下面的逻辑可以在MySQL中工作,但是因为在MSSQL中设置限制是一个非常复杂的查询,所以当我想要附加到查询时,它会引发问题。我玩过这个查询,试图弄清楚它应该如何,但无法让它工作。请帮忙。

//get all products for shopkeeper 
    if($limit == 0) { 
     $prod_qry = "SELECT id, productName FROM products WITH(NOLOCK) WHERE shopkeeper = '$this->shopkeeper'"; 
    } 
    if($limit > 0) { 
     $prod_qry = "SELECT * FROM (SELECT id, productName, ROW_NUMBER() OVER (ORDER BY id) as row FROM products WITH(NOLOCK) WHERE shopkeeper='$this->shopkeeper' ) a WHERE row > $start and row <= $limit"; 
    } 
    if($hidden == 1) { 
     $prod_qry .= " AND Hidden !='1'"; 
    } 

    if($rating != 0) { 
     $prod_qry .= " AND rating > '$rating'"; 
    } 

* 编辑 * 伊夫想通了,如下修改代码:

$prod_qry = "SELECT * FROM (SELECT id, productName, ROW_NUMBER() OVER (ORDER BY id) as row FROM products WITH(NOLOCK) WHERE shopkeeper='$this->shopkeeper'" ; 

    if($hidden == 1) { 
     $prod_qry .= " AND Hidden !='1'"; 
    } 

    if($rating != 0) { 
     $prod_qry .= " AND rating > '$rating'"; 
    }  

    $prod_qry .= ") a ";  

    if($limit > 0) { 
     $prod_qry .= " WHERE row > $start and row <= $limit"; 
    } 
+0

“但无法让它工作。”你可以说得更详细点吗?什么是错误信息? – 2012-01-04 13:22:27

+0

如果您在运行之前输出查询,它看起来像什么?它是否正确地形成? – ManseUK 2012-01-04 13:58:05

+0

这是问题,我不知道如何正确地形成它,我不熟悉MSSQL。 – LeeTee 2012-01-04 14:02:10

我已经编辑上面的答案的问题。