J'ai une table parent avec des entrées pour les documents et j'ai une table d'historique qui enregistre une entrée d'audit chaque fois qu'un utilisateur accède à l'un des documents.Sous-requête pour retourner la dernière entrée pour chaque ID parent
J'écris une requête de recherche pour retourner une liste de documents (filtrés par divers critères) avec le dernier identifiant d'utilisateur pour accéder à chaque document retourné dans le jeu de résultats.
Ainsi, pour
DOCUMENTS
ID | NAME
1 | Document 1
2 | Document 2
3 | Document 3
4 | Document 4
5 | Document 5
HISTORY
DOC_ID | USER_ID | TIMESTAMP
1 | 12345 | TODAY
1 | 11111 | IN THE PAST
1 | 11111 | IN THE PAST
1 | 12345 | IN THE PAST
2 | 11111 | TODAY
2 | 12345 | IN THE PAST
3 | 12345 | IN THE PAST
Je serais à la recherche d'obtenir un retour de ma recherche comme
ID | NAME | LAST_USER_ID
1 | Document 1 | 12345
2 | Document 2 | 11111
3 | Document 3 | 12345
4 | Document 4 |
5 | Document 5 |
Puis-je faire facilement cela avec une requête SQL et une jointure entre les deux tables?
Vous auriez besoin d'une LEFT OUTER JOIN pour obtenir les trois dernières lignes de la sortie requise. –
Je ne pouvais pas avoir max (timestamp) pour travailler sur le serveur SQL - cela fonctionne-t-il sur d'autres DB? –
Et vous auriez probablement besoin de: GROUP BY DOC_ID, USER_ID, et vous auriez besoin de réparer la clause HAVING ... –