用于查找多个范围中的值的SQL查询

时间:2010-12-03 09:38:34

标签: sql mysql

我有MySQL数据库,其中包含事件的日期和3个范围,即从1到1,从2到2,从3到3 每个范围都有不同的价格,即从1到1的比率1,从2到2的比率2,......

每个范围的3列:from,to和rate。

我正在尝试查找返回给定月份的费率的查询,这意味着找到月份所在的范围并返回该范围的费率。

任何想法?
谢谢!

2 个答案:

答案 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;