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.
Partager