我有MySQL数据库,其中包含事件的日期和3个范围,即从1到1,从2到2,从3到3 每个范围都有不同的价格,即从1到1的比率1,从2到2的比率2,......
每个范围的3列:from,to和rate。
我正在尝试查找返回给定月份的费率的查询,这意味着找到月份所在的范围并返回该范围的费率。
任何想法?
谢谢!
答案 0 :(得分:2)
如果你只为范围制作一个额外的表,你可以保持你的模式的正常形式,你可以很容易地选择正确的速率:TABLE范围,COLUMNS from,to,rate。使用外键链接到原始表。然后你可以选择比率从范围WHERE'日期'> =从AND'日期'< =到。
答案 1 :(得分:0)
您的数据模型似乎未规范化。您应该考虑关于创建附加表的morjas建议。
下面是一个非常难看的查询,它检查日期是否在三个范围中的任何一个,然后返回匹配率。
select case
when date '2010-12-05' between range1_from and range1_to then range1_rate
when date '2010-12-05' between range2_from and range2_to then range2_rate
when date '2010-12-05' between range3_from and range3_to then range3_rate
end as rate
from events
where date '2010-12-05' between range1_from and range1_to
or date '2010-12-05' between range2_from and range2_to
or date '2010-12-05' between range3_from and range3_to;