Опытные гуру SQL и Oracle У меня есть несколько сложный запрос, который я пытаюсь построить.Оставшееся соединение на нескольких таблицах с отметками времени
Вот мой текущий запрос:
select distinct person_info.person_name
table2.value,
table3.value,
table4.value,
table5.value
from person_info
left join table2 on table2.person_name=person_info.person_name
left join table3 on table3.person_name=person_info.person_name
left join table4 on table4.person_name=person_info.person_name
left join table5 on table5.person_name=person_info.person_name;
Первичный ключ для каждой таблицы является как person_name
и timestamp
. Теперь моя проблема в том, что если в таблице существует несколько экземпляров одного и того же person_name
, тогда я хочу только left join
на самом последнем. Кто-нибудь знает, как добавить это поведение в этот запрос? Я использую Oracle.
Спасибо!
Есть даты начала и окончания каждой таблицы, или только один столбец временной метки? Обычно, когда запись применима только для определенного диапазона дат, записываются как начальная, так и конечная даты. –
Только столбец временной метки, указывающий, когда запись была вставлена –
@ Марк Баннистер - я не согласен. Если вы сохраняете как временные метки начала, так и конца, вы рискуете как перекрывающимися диапазонами, так и диапазонами без значений. Тем не менее, если вы храните, например, EFFECTIVE_DATE в качестве единственного fencepost, вы затем выполняете поиск наибольшего EFFECTIVE_DATE меньше, чем какая-либо дата интереса. –