ROW_NUMBER()与INNER JOIN SQL Server 2008分页

时间:2012-05-12 03:46:49

标签: php sql-server-2008 pagination

我正在尝试使用INNER JOIN连接两个表,并使用ROW_NUMBER限制每页显示的结果数量:

$tsql = "SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, * FROM products INNER JOIN product_catalogue ON products.catalogueID = product_catalogue.catalogueID
        WHERE category1 = '1') AS products1
WHERE rownum >= 0 AND rownum <= 6";

  $stmt = sqlsrv_query($conn,$tsql);

 while($row = sqlsrv_fetch_array($stmt)){ 
        echo $row['productID']. "<br/>";
         echo $row['product_name']. "<br/>";

  }

我得到“sqlsrv_fetch_array()期望参数1是资源”错误,我知道它与我使用INNER JOIN有关,因为如果我在没有它的情况下运行查询,我会在页面上显示结果:

$tsql = "SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, * FROM products ) AS products1
WHERE rownum >= 0 AND rownum <= 6";

1 个答案:

答案 0 :(得分:0)

我猜你在谈论MS SQL服务器。 我不用php编写代码,但你应该先检查以下内容:

  1. 您的查询是否仅使用SQL(SSMS中的MS SQL)
  2. 你是特定的列名,也许你有双重命名列!例如两列名为“id” 然后你在你的结果中2次相同的solumn,没有SQL的问题, 但大多数数据库连接器驱动程序的问题
  3. 如果一切都不起作用,请进行查询(CREATE QUERY qry_yourQuery AS) 使用SELECT * FROM qry_yourQuery然后