2016-02-27 176 views
0

我想根据季节日期风格显示价格。Mysql日期范围价格

例子:

电影有不同的价格是基于日期确定

season_1 = 2016年5月1日 - 2016年8月31日的价格为$ 100
season_2 = 2016-09-01 - 2017-04-31价格为50 $

我在表

中有两个日期

season_tbl:

id | start_date | end_date | name 
-------------------------------------------------- 
1  | 2016-05-01 | 2016-08-31 | season_1 
2  | 2016-09-01 | 2017-04-30 | season_2 

movies_price_tbl:

id | season_id | name   | price | movie 
------------------------------------------------------------ 
1  | 1    | Gladiator movie | 100$ | 1 
2  | 2    | Gladiator movie | 50% | 1 

我期待什么:

当用户在搜索输入开始2016-06-01结束2016-07-30和电影节目价格的选择ID那天。在这种情况下显示season_1价格100$。 如果用户输入开始2016-09-23年底2017-01-21显示season_2价格

我尝试,但没有工作:

WHERE m.movie_id = 1 AND s.start_date <= '2016-05-01' AND s.end_date >= '2016-07-20' 
+0

这是数据类型的列START_DATE日期和结束日期? – scaisEdge

+0

列的类型首先是'日期',我将其更改为'varchar' – Ivan

+0

现在在db中是varchar? ..你的查询得到了什么结果?显示您使用的所有查询代码.. – scaisEdge

回答

0

也许这查询将做到:

SELECT movies_price_tbl.price FROM season_tbl 
    INNER JOIN movies_price_tbl ON season_tbl.id = movies_price_tbl.season_id 
    WHERE movies_price_tbl.movie = '1' 
    AND season_tbl.start_date <= '2016-05-01' 
    AND season_tbl.end_date >= '2016-07-20' 

PS:你应该摆脱name的在movies_price_tbl。没有必要,因为有一个movie_id

+0

这个例子工作,但一个不工作当我输入开始日期'2016-01-01'到结束日期'2016-02-01'返回'null'。但范围内的所有其他工作。 – Ivan

+0

还有什么应该退回 - 2016-01-01和2016-02-01之间没有季节限定 – Olli

0

尝试此查询

SELECT price FROM movies_price_tbl WHERE movie_id = 1 && season_id = (select id from season_tbl where start_date <= '2016-05-01' && end_date >= '2016-07-20')