|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Bonjour
Dans une base de travail, j'historise à chaque mise à jour des statistiques dans une table sous la forme : date type client1 stat1 stat2 stat3 date type client2 stat1 stat2 stat3 date type client3 stat1 stat2 stat3 la date est donnee dans le fichier de mise à jour Je ne desire pas garder les stats de chaque mise à jour, mais seulement une par mois, et la plus proche de la fin du mois. En gros, ce que je voudrais : je fais la mise à jour, j'ajoute mes enregistrements dans la table des stats avec la date de l'import, je verifie si il existe des enregistrements pour le même mois avec une date inferieure et je supprime eventuellement. J'y arrive pas avec des requetes suppression... |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
bonjour,
j'ajouterai une requête DELETE avec dans la clause WHERE un truc comme ça : le Id spécifique au client AND (Date >= DateSerial(Year(DateImport), Month(DateImport), 1) AND Date < DateImport) Je n'utilise pas dans ce cas l'opérateur Between car les dates extrêmes seraient incluses. Si la requête est lancé à partir du code VBA, on peut prétraiter Year(DateImport) et Month(DateImport) au moment de l'écriture de la requête. Attention au format des dates dans une clause WHERE pour ne pas inverser les jours et les mois... A tester avant mise en production... @+ Philippe |
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Voici le code de la requete suppression qui donne le message d'erreur : "impossible de supprimer dans les tables spécifiées" (alors que je vois bien ce qu'il faut en requete selection)
Code :
La table tbl_datamart contient la date du dernier import la table tbl_stats_ID contient toutes les statistiques, et notamment celles que je voudrais supprimer en cas de date + récente pour le même mois Désolé si je suis pas tres clair... |
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
J'essayerai ceci :
Code :
Philippe |
||
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Merci bcp
![]() Ca avance. En mettant le bon champ (a la place de MaDate dans ton code), j'arrive à ce code : Code :
Je dois trouver une solution pour gérer une mise à jour avec un fichier ancien, afin qu'il ne la prenne pas en compte vu qu'il y aura certainement des enregistrements existants du même mois. Donc ma reference dans ce cas n'est peut être pas la date du datamart mais la date maxi du mois dans la table des stats |
||
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
Citation:
Bonne continuation, Philippe |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Oui j'essaie de le faire mais
La 1ere sous requete est à conserver (minDate comme 1er du mois du datamart) Par contre, je n'arrive pas à faire la sous requete pour determiner la maxdate, qui doit être la date maxi du mois du datamart |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
J'ai donc modifier la 2eme sous requete d'origine mais j'ai une erreur de syntaxe
Code sql :
|
||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
J'ai trouvé
Triple condition / 3 sous requetes >= au 01 du mois du datamart <= au 31 du mois du datamart et < au datamart donc Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Ben non ca marche pas...
J'en suis toujours à mon erreur de syntaxe, ou comment aller chercher la maxdate du mois du datamart |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
bonjour,
j'ai pas tout suivi mais la sous-requête qui va chercher la date maxi du datamart c'est : Code :
philippe |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com