对分页的连接计数(),获取额外的行

时间:2014-09-28 17:03:54

标签: mysql sql pagination

我有这个问题,当我运行这个。

$results = mysqli_query($connecDB,"SELECT COUNT(*) FROM customers 
        RIGHT JOIN orders on customers.serial=orders.serial 
        RIGHT JOIN order_detail on orders.serial=order_detail.orderid 
        LEFT JOIN inventory on order_detail.productid=inventory.prod_id");
$get_total_rows = mysqli_fetch_array($results); //total records

它显示其他页面,即使它是空白的。我已经尝试过其他不需要我加入的表格,并且它适用于它们。但有了这个,它就不能完美地运作。

如何修复计数功能?

这是我在调整分页代码之前的原始查询。

SELECT DISTINCT customers.order_status,customers.serial,customers.name,customers.address,customers.phone,customers.email,customers.payment,customers.carrier,customers.tracking_no, orders.date, order_detail.productid, order_detail.quantity, order_detail.price, inventory.prod_name 
        FROM customers 
        RIGHT JOIN orders on customers.serial=orders.serial 
        RIGHT JOIN order_detail on orders.serial=order_detail.orderid 
        LEFT JOIN inventory on order_detail.productid=inventory.prod_id
        GROUP BY orders.date, order_detail.orderid
        ORDER BY order_detail.orderid DESC";

1 个答案:

答案 0 :(得分:0)

要发表评论:

有三种方法可以将总记录用于分页。

  1. 执行不带限制的查询,并获取结果集中的记录数。很明显,这不是可行的方法。
  2. 使用限制执行查询并使用SQL_CALC_FOUND_ROWS。
  3. 用COUNT(1)替换SELECT子句中的列并获取(单个)行。
  4. 在许多情况下,第三种是最佳选择,但有时第二种可以完成第三种选择。

    最后,请参阅此谓词

    • 无法订购库存中的产品
    • 非客户无法提交订单

    我认为内部联接已经足够了