2013-11-21 38 views
0

我有一張表。客戶每次更新產品時都會存儲價格。這樣,我可以監視價格變化,如果你喜歡歷史。MySQL查詢按產品編號的價格變化量

表結構

ID (Primary Key) 

Date (DateTime) 

Price (Decimal) 

Product_ID (INT) - Foreign Key 

我想找到的總次數一個價格每個產品兩個日期之間的變化,然後加起來的總。

因此,例如,我可以在主頁上說:「我們已經改變了X產品10日2013年12月的價格 - 二十月2013)

回答

0

這是很容易通過查詢用一個簡單的組辦

select count(*), product_id from table where date>='' and date<'' group by product_id 

這會給你的產品ID和變化的過程中時間段數。

0
SELECT SUM(priceChanges) 
FROM (SELECT count(*) as priceChanges 
     FROM Table 
     WHERE DATE BETWEEN start AND end 
     GROUP BY product_id 
    ) 
UNION 
SELECT count(*), product_id 
FROM Table 
WHERE DATE BETWEEN start AND end 
GROUP BY product_id 

第一行會的全部資金,其餘的將是價格變動數每個product_id。

我不喜歡這樣的結果集,因爲它需要應用程序端的邏輯來解析結果集。但是,如果您不想將其拆分併發出2個查詢,則無論如何您都需要應用程序邏輯。

你可以做的另一件事是隻發出底部選擇語句,並在處理結果集時計算所有計數的總和。

如果查詢速度慢,您可能需要考慮在日期列上創建索引。

0

試試這個。

SELECT COUNT(*) AS total, 
     product_id 
FROM table 
WHERE date BETWEEN 'fromDate' AND 'toDate' 
GROUP BY product_id 
+0

我之前有過這個,它返回的結果太多。我知道一個事實,它返回的結果有太多的價格變化。 –

+0

你可以發佈一些數據嗎?它會更清楚。並且它會返回很多記錄,因爲我們按Product_id進行分組,它會以product_id的編號重複。 –

相關問題