【发布时间】:2010-11-25 07:19:19
【问题描述】:
我有一个网络应用程序,可以让客户为其服务定义每日费率。对于任何一天,客户可以输入两个费率,一个小时费率 (rateTypeId=1) 和一个每日费率 (rateTypeId=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
但那是行不通的。我想我需要一个子选择语句的连接,但不确定。我的结果每个日期应该包含两行,类似于:
ID --- RATETYPEID --- RATECODE ---------- ENTRYTIMESTAMP ----- RATE
3 ----------- 1 --------------- 32 -------------------- 1200000000 ----------6.00
2 ----------- 2 --------------- 33 -------------------- 1100000000 ----------7.00
感谢您的任何建议。
【问题讨论】:
标签: mysql