Bonjour,

Pourriez-vous m'aider concernant l'élaboration d'une vue en SQL sur une base de données contenant des tables d'historisation?

Le context est le suivant: quand une mise à jour (à une date t) est réalisée, une nouvelle entrée (nouvel ID HIST) est insérée dans la table d'historisation correspondante.

Voici la structure des tables de ma base de données:

Table contrat HIST (informations générales)

ID HIST Date Creation ID Contrat Titre Contrat Description Budget
1 01/01/2015 1 Contrat 1 Contrat Informatique 20 000
2 15/01/2015 1 Contrat 1 Contrat Informatique 50 000
3 02/02/2015 2 Contrat 2 Contrat Santé 10 000
4 01/03/2015 2 Contrat 2 Contrat Consommateur 30 000
5 01/07/2015 1 Contrat 1 Contrat Informatique 50 000

Table MODULE HIST

ID HIST Date Creation ID Module Titre Module ID Contrat
13 04/01/2015 1 Module 1 1
18 19/01/2015 1 Module 1 1
18 19/01/2015 2 Module 2 1
30 10/02/2015 1 Module 1 2
30 10/02/2015 2 Module 2 2
69 19/02/2015 1 Module 1 2
71 07/03/2015 2 Module 2 2
71 07/03/2015 3 Module 3 2
82 25/07/2015 1 Module 1 1
82 25/07/2015 3 Module 3 1

Les identifants (ID HIST) des 2 tables sont différents et non liés seul les identifiants du contrat (ID Contrat) sont liés.

J'aimerais que la vue récupère toutes les mises à jour (à partir de ID_HIST et Date Creation) des 2 tables triées par date. Si la mise à jour concerne la table des modules alors j'aimerais récuperer les dernières valeurs de la table contrat (les valeurs de la dernière ligne précédent la date de mise à jour pour le contrat concernant), comme ceci:

ID HIST Date Creation ID Contrat Titre Contrat Description Budget Commentaire
1 01/01/2015 1 Contrat 1 Contrat Informatique 20 000 Phase 1 - Création du contrat 1
13 04/01/2015 1 Contrat 1 Contrat Informatique 20 000 Phase 2 - Ajout du module 1 au contrat 1
2 15/01/2015 1 Contrat 1 Contrat Informatique 50 000 Phase 3 - Modification des données du contrat 1
18 19/01/2015 1 Contrat 1 Contrat Informatique 50 000 Phase 4 - Ajout des modules 1 et 2 au contrat 1
3 02/02/2015 2 Contrat 2 Contrat Santé 10 000 Phase 5 - Création du contrat 2
30 10/02/2015 2 Contrat 2 Contrat Santé 10 000 Phase 6 - Ajout des modules 1 et 2 au contrat 2
69 19/02/2015 2 Contrat 2 Contrat Santé 10 000 Phase 7 - Suppression du module 1 pour le contrat 2
4 01/03/2015 2 Contrat 2 Contrat Consommateur 30 000 Phase 8 - Modification des données du contrat 2
71 07/03/2015 2 Contrat 2 Contrat Consommateur 30 000 Phase 9 - Attribution des modules 2 et 3 au contrat 2
5 01/07/2015 1 Contrat 1 Contrat Informatique 50 000 Phase 10 - Modification des données du contrat 1
82 25/07/2015 1 Contrat 1 Contrat Informatique 50 000 Phase 11 - Attribution des modules 1 et 3 au contrat 1

La colonne commentaire est juste à titre d'information pour comprendre le jeu d'essai.

Je ne parviens pas à faire la partie sur la récupération des mises à jour des modules munis des dernières info du contrat concerné (dernière ligne des contrats dont la date est juste avant la date de mise à jour du module).

Merci d'avance pour votre aide.