我有一個數據庫,其中包含來自同一產品的不同供應商的價格。每個供應商/產品組合有一個開始&結束日期與產品ID和價格SQL - 根據日期範圍獲取最低價格
id | pid | aid | start_date | end_date | price
1 | 1 | 1 | 2017-01-01 | 2017-01-10 | 10.00
1 | 1 | 2 | 2017-01-01 | 2017-01-05 | 12.00
1 | 1 | 2 | 2017-01-06 | 2017-01-09 | 9.00
我使用日曆表,以確保我有在一定範圍內的所有日期。 我的掙扎是選擇某個日期範圍內的最低價格。上述數據應輸出如下。
date | aid | price
2017-01-01 | 1 | 10.00
2017-01-02 | 1 | 10.00
2017-01-03 | 1 | 10.00
2017-01-04 | 1 | 10.00
2017-01-05 | 1 | 10.00
2017-01-06 | 2 | 9.00
2017-01-07 | 2 | 9.00
2017-01-08 | 2 | 9.00
2017-01-09 | 2 | 9.00
2017-01-10 | 1 | 10.00
只要有一個供應商,並獲得價格不是問題,但只要我開始對數據進行分組我只得到一個結果或不正確的結果。 我正在使用此查詢,它提供了錯誤的結果。
SELECT
c.date, min(p.price) as min_price
FROM
bricks_calender c
LEFT JOIN
bricks_prijzen p ON c.date BETWEEN p.start_date AND p.end_date
WHERE
p.pid = 1
GROUP BY
aid
ORDER BY
c.date
任何建議,我需要更新此查詢,以獲得預期的結果?或者我應該改變我的數據模型(這當然不是首選)
使用GROUP BY援助和日期 –
@RavinderReddy分組由'aid'和'date'會給結果正好等於日曆表,因爲他的日期完全不同 – sadmicrowave
@Ralf,你能否提供你所收到的查詢作爲「錯誤」的輸出? – sadmicrowave