Ok Les gourous SQL et Oracle J'ai une requête un peu compliquée que j'essaie de construire.Quitter plusieurs tables avec des horodateurs
Voici ma requête en cours:
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;
La clé primaire pour chaque table est à la fois person_name
et un timestamp
. Maintenant, mon problème est que si plusieurs instances de la même person_name
existent dans une table, je veux seulement left join
sur le plus récent. Est-ce que quelqu'un sait comment ajouter ce comportement à cette requête? J'utilise Oracle.
Merci!
Y at-il dates de début et de fin sur chaque table, ou tout simplement une colonne d'horodatage? Normalement, lorsqu'un enregistrement n'est applicable que pour une plage de dates spécifique, les dates de début et de fin sont enregistrées. –
Juste une colonne d'horodatage indiquant quand l'enregistrement a été inséré –
@ Mark Bannister - Je ne suis pas d'accord. Si vous stockez les horodatages de début et de fin, vous risquez d'avoir à la fois des plages de chevauchement et des plages sans valeurs. Toutefois, si vous stockez, par exemple, EFFECTIVE_DATE en tant que fencepost unique, vous recherchez alors le EFFECTIVE_DATE le plus grand moins qu'une date d'intérêt. –