Bonjour, désolé pour le titre, j'ai pas trouvé mieux
J'ai un petit problème de select :
j'ai 2 tables :
ag2 :
id, plop, id_cl, date_heure
et cl:
id, ci, date_archivage
Je dois afficher les données de ag2, et afficher en relation la colonne ci de cl, jusque là, c'est assez simple :
Bon, c'est 2 tables sont des tables dites d'archivage, et gros les données proviennent d'une base dite d'exploitation, dont on rajoute un timestamp d'archivage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select ag2.id, plop, ci from ag2, cl where ag2.id_cl = cl.id
Donc pour une date XXX, je modifie la requête comme çà :
Et c'est là que çà coince, en effet, si ma table cl, ne contient qu'une journée d'archivage, cl.id est unique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select ag2.id, plop, ci from ag2, cl where cast(ag2.plop as date) = date 'X' and ag2.id_cl = cl.id
Mais après plusieurs archivage j'ai qqchose comme çà:
Donc avec ma requête précédente, j'ai chaque combinaison de ag2 combiné avec les 3 archivages de cl.1, 'a', 2011-05-07
1, 'a', 2011-05-08
1, 'a', 2011-05-09
J'ai donc voulu spécifier que je voulais dans cl que pour ma date X :
Mais là c'est pire, j'ai une surmultiplication des données retournées, j'arrive même pas à expliquer ce que çà me retourne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select ag2.id, plop, ci from ag2, cl where cast(ag2.plop as date) = date 'X' and ag2.id_cl = cl.id and cast(cl.date_archivage as date) = date 'X'
Avez-vous une idée pour rapport à comment je pourrais résoudre mon problème ?
Sachant que j'ai une petite contrainte à rajouter : dans mon exemple X est identique dans ag2 et cl, mais imaginons que l'enregistrement de l'archivage pour la date X n'existe pas dans cl, il faudrait que çà passe sur la version antérieure. (bon je pense que pour çà il faut juste que je modifie le '=' par '<=' dans ma requête, mais je préfère avoir une confirmation)
Merci d'avance.






Répondre avec citation
Partager