2014-09-28 39 views
-1

我有這個問題,當我運行這一個。計數()加入分頁,獲得額外的行

$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"; 
+0

我完全困惑你的問題。你的第一個查詢有一個「count(*)」而不是「group by」,所以它總是返回一行。因此,沒有「額外的行」。第二個有一個「group by」,所以它與第一個沒有特別的關係。另外,你有這種外部連接的奇怪混合,這使得查詢很難解開。 – 2014-09-28 17:06:04

+0

我的第一個查詢是爲了單個表格,我從互聯網上下載了一個演示,我調整了它,並且在連接表格時遇到了問題,這是我的第二個查詢。 @GordonLinoff – geds13 2014-09-28 17:27:26

+0

我想知道你是否從查詢中獲得了期望的結果。使用正確的連接是不推薦的,所以使用左右連接只會導致一個混亂 – Gervs 2014-09-28 17:33:55

回答

0

要多少加入了註釋:

有三種方法來獲得總記錄與分頁使用。

  1. 執行沒有限制的查詢並獲得結果集中的記錄數。很明顯,這不是要走的路。
  2. 用限制執行查詢並使用SQL_CALC_FOUND_ROWS。
  3. 用COUNT(1)替換SELECT子句中的列並獲取(單個)行。

在很多情況下,第三種是最好的選擇,但有時第二種可以執行第三種。

最後,看到這個謂詞

  • 一種產品,其是不是在庫存無法下單
  • 訂單不能被非客戶提交

我想內部聯接是足夠的