2016-12-12 3 views
1

У меня есть таблицаSQl присоединиться на диапазон дат

ID, Start Date, End Date 

У меня есть вторая таблица, которая имеет один столбец, даты с 2000 до 2050 г. Это ключ, чтобы присоединиться начальную и конечную дату Date_ID

Я хотел бы взять таблицу, начиная как этот

ID, Start Date, End Date 
123, 1/1/2017, 1/5/2017 

Затем присоединиться к нему на Дата таблице (вторая таблица) для вывода таблицы, как этот

ID, Start Date, End Date, Day Date 
123, 1/1/2017, 1/5/2017, 1/1/2017 
123, 1/1/2017, 1/5/2017, 1/2/2017 
123, 1/1/2017, 1/5/2017, 1/3/2017 
123, 1/1/2017, 1/5/2017, 1/4/2017 
123, 1/1/2017, 1/5/2017, 1/5/2017 

Я думал о присоединении к диапазону дат, но это не работает. Любая помощь/предложения будут высоко оценены! Я использую MYSQL.

SELECT 
    name, 
    date(start_date), 
    date(end_date), 
    d.id as Day_Date 
FROM 
    f_table1 a 
Left Join 
    d_table2 d on d.id = d.id between date(a.start_date) and date(a.end_date) 

Вышеуказанный код, конечно, не работает, но это мой лучший удар до сих пор.

+0

Не знаете, какова ваша таблица2. Покажите нам пример данных для таблиц и ожидаемого результата. \t Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –

ответ

1
SELECT 
    name, 
    date(start_date), 
    date(end_date), 
    d.id as Day_Date 
FROM  f_table1 a 
Left Join d_table2 d 
    on d.id = d.id 
    and d.`Day Date` between date(a.start_date) and date(a.end_date) 
+0

Это прекрасное спасибо! –

0

Попытка запроса ниже:

ВЫБОР имя, даты (start_date), дате (дата_окончания), d.id, как Day_Date ОТ f_table1 RIGHT JOIN d_table2 д на д .id между датой (a.start_date) и датой (a.end_date)