我有一個web應用程序,它可以讓客戶爲他們的服務定義每日費率。對於任何給定的一天,客戶可以輸入兩個費率,一個小時費率(rateTypeId = 1)和一個dailyRate(rateTypeId = 2)。這些費率通常是預先分配的,而且通常會改變。我需要跟蹤所有的作業,但只能提取最新的分配率。基於max的Mysql連接(時間戳)
我有兩個表。第一個表只是定義我的費率結構,看起來像這樣(簡化):
表:RateDefinitions
RATECODE ----- RATE
31 ---------------- 5.00
32 ---------------- 6.00
33 ---------------- 7.00
我的第二個表跟蹤分配給指定的日期的利率。可以將多個費率分配給給定日期,但我們只會使用基於'entrytimestamp'的最新費率。
表:價格
ID --- RATETYPEID --- RATECODE ------ DATE -------- ENTRYTIMESTAMP
1 ---------- 1 --------------- 31 ---------- 20091010 ---------- 1100000000
2 ---------- 2 --------------- 33 ---------- 20091010 ---------- 1100000000
3 ---------- 1 --------------- 32 ---------- 20091010 ---------- 1200000000
現在我有困難組建一個查詢,將拉動所有給定的時間內最新的速率分配。
我已經試過:
select r.id, r.rateTypeId, r.rateCode, max(r.entryTimestamp), rd.rate
from rates r
join rateDefinitions rd
on r.rateCode=rd.rateCode
where date=20091010
group by startDate, rateTypeId
但是這並不打算這樣做。我想我需要在子選擇語句上加入,但不確定。我的結果應該包含兩行每日期,類似於:
ID --- RATETYPEID --- RATECODE ---------- ENTRYTIMESTAMP ----- RATE
3 ----------- 1 --------------- 32 -------------------- 1200000000 ----------6.00
2 ----------- 2 --------------- 33 -------------------- 1100000000 ----------7.00
感謝您的任何建議。
感謝深紅和Doug海耶斯。這裏的理論幫助解決了這個問題。 – user167850 2009-09-03 14:59:48