2016-02-27 3 views
0

Я хочу показать цену, основанную на дате сезона.Mysql диапазон дат цена

Пример:

Фильмы имеют разные цены, которые определяются на основе даты

season_1 = 2016-05-01 - 2016-08-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 и выберите идентификатор фильма шоу цене на эту дату. В этом случае show 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

, который является типом данных для столбцов Дата_начали и end_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' return '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') 
Смежные вопросы