В базе данных PostgreSQL У меня есть 2 таблицы, как эти из них:Регистрация таблиц с помощью соответствующего периода
Таблица пунктов:
item_id item save_date (date dd/mm/yy)
----------------------------------------------
1 car 01/12/11
2 wheel 10/12/11
3 screen 11/12/11
4 table 15/12/11
Таблица периодов:
period_id period_name start (date dd/mm/yy)
------------------------------------------------
1 period1 05/12/11
2 period2 09/12/11
3 period3 12/12/11
Так что я хотел бы получить объединенная таблица, добавляющая к элементам таблицы наиболее подходящий период (если по совпадениям). Период будет соответствовать, если save_date элемента будет после даты начала периода.
Например, для «car» дата 01/12/2011, поэтому я перехожу к периодам таблицы, и там я вижу, что все периоды начинаются после этой даты, поэтому я должен установить ее в null. Если я возьму «экран», дата будет 11/12/11, поэтому в периоды я должен взять period2, потому что это последнее, которое соответствует.
Так присоединился к таблице приведет:
item_id item save_date period_name
----------------------------------------------
1 car 01/12/11 null
2 wheel 10/12/11 period2
3 screen 11/12/11 period2
4 table 15/12/11 period3
Что такое лучший способ сделать это соединение?
Благодаря
период3 не должен быть еще действителен (до бесконечности), так как нет периода с более поздней датой? – wildplasser
Учтите, что если ваша таблица периодов имела атрибут даты окончания, запрос был бы тривиальным. – onedaywhen
@wildplasser, onedaywhen Да, периоды действительны с этого времени до вечности. Я не знаю заранее дату окончания, потому что дата окончания будет датой начала следующего (ближайшего по времени) периода – Javi