私はクライアントが自分のサービスの1日の料金を定義できるようにするWebアプリケーションを持っています。任意の日に、クライアントは時間レート(rateTypeId = 1)とdailyRate(rateTypeId = 2)の2つのレートを入力できます。これらの料金は事前に割り当てられることが多く、頻繁に変更されます。私はすべての割り当てを追跡する必要がありますが、割り当てられた最新のレートだけを引き出します。max(timestamp)に基づくMysql参加
私は2つのテーブルを持っています。最初の表は、単純に私の料金体系を定義し、この(簡体字)のようになります。
表:RateDefinitions
RATECODE ----- RATE
31 ---------------- 5.00
32 ---------------- 6.00
33 ---------------- 7.00
私の第二の表は、与えられた日付に割り当てられた率を追跡します。特定の日付に複数のレートを割り当てることができますが、「エントリータイムスタンプ」に基づく最新のレートのみを使用します。
表:料金
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
をしかし、それはそれを行うことはないだろう。私はsubselectステートメントに参加する必要があると思っていますが、わかりません。結果は、日付ごとに2行含まれている必要があります。
ID --- RATETYPEID --- RATECODE ---------- ENTRYTIMESTAMP ----- RATE
3 ----------- 1 --------------- 32 -------------------- 1200000000 ----------6.00
2 ----------- 2 --------------- 33 -------------------- 1100000000 ----------7.00
ありがとうございます。
感謝。ここの理論がこの問題の解決に役立った。 – user167850