Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 12h11   #1
Membre confirmé
 
Avatar de BakaOnigiri
 
Inscription : avril 2002
Messages : 341
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 341
Points : 201
Points : 201
Par défaut select et données dupliquées

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 :

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


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.
BakaOnigiri est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web