2012-05-22 65 views
1

我已經問了一個關於我的SQL查詢的問題,而且它工作正常,直到我注意到我忘記了一個非常重要的代碼塊,現在我花了大約一個半小時試圖修改我的代碼。原始問題提出了一個很好的方法來內聯兩個表(orders和order_items)。然後我通過SQL查詢做了一個mysql_num_row(),並將它命名爲一天。我忘記了我的order_items表中有一個名爲quantity的單元格。我需要將這一點納入我的數量。我在下面包括我的代碼,並且有關如何輕鬆實現這一點的任何想法將不勝感激。計數而不是行數 - MySQL/PHP

$SQL2ORDERSEARCH = " 
SELECT * FROM order_items 
INNER JOIN orders 
ON orders.id = order_items.ord 
WHERE orders.session = '$sessionID' 
AND order_items.dish = '$SEARCHITEMS_OBJECT->dish' 
AND order_items.size = 'full'"; 

$ORDERSEARCH = mysql_query($SQL2ORDERSEARCH) or die(mysql_error()); 
$ORDERSEARCH_NUM_ROWS = mysql_num_rows($ORDERSEARCH); 
$FULLTOTAL = $FULLTOTAL + $ORDERSEARCH_NUM_ROWS; 

我試着通過計數嘗試不同的路線。所以我修改我的查詢這樣:

$SQL2ORDERSEARCH = " 
SELECT COUNT(quantity) FROM order_items 
INNER JOIN orders 
ON orders.id = order_items.ord 
WHERE orders.session = '$sessionID' 
AND order_items.dish = '$SEARCHITEMS_OBJECT->dish' 
AND order_items.size = 'full'"; 

我並沒有從技術上有什麼需要,因爲所有我想做的是統計有多少菜是這裏涉及。然後我創建了一個if語句來確定是否有來自該查詢的任何行,然後計算它們的數量。

if($ORDERSEARCH_NUM_ROWS > 0) { 
    while($ORDERSEARCH_OBJECT = mysql_fetch_object($ORDERSEARCH)) { 
     $FULLQTY = COUNT($ORDERSEARCH_OBJECT->quantity); 
    } 
} 

我得到了不同的結果。有時候,我會在數據表中直接向下1。其他時間(取決於$ FULLQTY + = COUNT($ ORDERSEARCH_OBJECT-> quantity)等任何小的更改;並嘗試這樣做);我得到的結果看起來幾乎像模式一樣,數字增加了5+,並以某種方式加起來接近20+你進入的名單更遠。

我只是尋找一種簡單的方法來獲得order_items中的數量單元的數量,然後將它們顯示在表格中,然後計算總數。我有一切都很好,並且減少了獲取order_items中的數量單元的數量。任何想法,我會非常感激!

+0

爲什麼不使用SUM()? – afuzzyllama

+0

在靜態工作之後,我使用SUM(),但必須在查詢中將其設置爲SELECT SUM(quantity)AS quantityTotal。知道使用SUM()很有幫助,但對每一種其他方式都沒有幫助。在這種情況下,沒有提出任何人的答案。 – lxndr

回答

2

不會簡單選擇金額(數量)在這裏工作?

+0

當我嘗試SUM(數量)時,我收到了空白結果或1的全部結果。我知道我的結果中有不止一個項目,所以我知道我沒有得到正確的結果。不好意思,因爲我不是基本的選擇/插入/更新/刪除之外的最佳SQL。 – lxndr

+0

繼續工作之後,我使用SUM(),但必須在查詢中將其設置爲SELECT SUM(quantity)AS quantityTotal。知道使用SUM()很有幫助,但對每一種其他方式都沒有幫助。在這種情況下,沒有提出任何人的答案。 – lxndr

+0

我不確定我是否理解你的觀點:Sum是要走的路,不是嗎?這是什麼沒有幫助?如果我們的答案對您沒有幫助,那麼請添加您自己的答案,並解決問題,並將其標記爲答案。 – Yahel