2009-12-21 77 views
1

我想弄清楚這種查詢格式的最有效的方法。查詢結果組織

我有三個表 - 交易,購買和項目。

期望的結果是爲特定客戶的每件商品選擇銷售數據(數量/銷售總額)。


表的格式如下:( =主鍵)*

交易: TRANSACTION_ID *,時間戳

採購: Purchase_ID *,出售,的Item_ID,交易ID,數量

貨號:的Item_ID *,CLIENT_ID,說明


至於現在我有一個查詢設置來選擇特定的client_id每個項目:

SELECT Item_ID, Description FROM Item WHERE Client_ID = $ClientId 

然後我存儲在數組中的結果,執行查詢以檢索給定日期範圍之間的每個Item_ID的銷售數據:

SELECT Sale, Quantity 
    FROM Purchase INNER JOIN Transaction 
    ON Purchase.Transaction_ID = Transaction.Transaction_ID 
WHERE Transaction.Timestamp >= $start 
    AND Transaction.Timestamp<= $end 

然後對於每個取出的行,我總結數量。

它完成了工作,但可能不是完成這項工作的最有效方式。

我想通過銷售總額訂購此數據,把最大數量的第一
你怎麼會去這個排序從最大到最小?

有沒有辦法讓這一切都完成在一個查詢?

+1

歡迎來到StackOverflow!這是你的第一票。 – Sampson 2009-12-21 17:39:36

+0

刪除了PHP標籤,因爲它確實是一個僅限SQL的問題。添加了sql查詢性能標籤。 – Gordon 2009-12-21 17:48:39

+0

很抱歉,如果這是一個愚蠢的問題,但在這種情況下,銷售總額是什麼意思? – 2009-12-21 17:49:07

回答

4

下面的工作?

SELECT Item_ID, SUM(Quantity), Sum(Sale) 
FROM Item 
JOIN Purchase ON Item.Item_ID=Purchase.Item_ID 
JOIN Transaction ON Purchase.Transaction_ID=Transaction.Transaction_ID 
WHERE Client_ID = $ClientId 
AND Transaction.Timestamp>= $start 
AND Transaction.Timestamp <= $end 
GROUP BY Item_ID 
ORDER BY SUM(Quantity), SUM(Sale) DESC 

我認爲這是你想要的從你問的問題。 在那裏可能有一個愚蠢的錯誤,因爲我沒有在桌上測試它,但它應該讓你開始。

+0

+1看起來正是他所需要的。 – gbianchi 2009-12-21 17:56:42

+0

非常好。我會試試這個。爲了將來的參考,你如何突出SQL語句中的語法? – 2009-12-21 17:58:22

+0

@Derek:只需突出顯示文本並單擊代碼(101010)圖標即可。 – 2009-12-21 18:01:10