select et données dupliquées
Bonjour, désolé pour le titre, j'ai pas trouvé mieux :oops:
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 :
Code:
1 2 3 4 5 6
| select
ag2.id, plop, ci
from
ag2, cl
where
ag2.id_cl = cl.id |
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.
Donc pour une date XXX, je modifie la requête comme çà :
Code:
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 |
Et c'est là que çà coince, en effet, si ma table cl, ne contient qu'une journée d'archivage, cl.id est unique.
Mais après plusieurs archivage j'ai qqchose comme çà:
Citation:
1, 'a', 2011-05-07
1, 'a', 2011-05-08
1, 'a', 2011-05-09
Donc avec ma requête précédente, j'ai chaque combinaison de ag2 combiné avec les 3 archivages de cl.
J'ai donc voulu spécifier que je voulais dans cl que pour ma date X :
Code:
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' |
Mais là c'est pire, j'ai une surmultiplication des données retournées, j'arrive même pas à expliquer ce que çà me retourne :oops:
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.