Bonjour,
J'aimerais ici vous exposer un problème dans les résultats attendus de ma requête.
Le principe de sélection des enregistrement est le suivant : Je cherche à récupérer tous les enregistrements les plus récents par clé (clé étant une foreign key vers une autre table)
Voici une première requête et les résultats que j'obtiens :
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select c.idcle, c.libelle as libelleCle, vt.idversiontraduction,vt.valeur as valeurTraduction, vt.datecreation from VersionTraduction vt, Cle c where vt.fk_langue= 1 and vt.fk_etat <> 2 and vt.fk_etat <> 4 and vt.fk_cle = c.idcle and fk_cle in (select cle.idcle from cle cle where cle.fk_projet = 1 )
Mes résultats sont correctes, la requête me renvoie ce que j'attendais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 c.idcle | c.libellecle | vt.valeur| vt.datecreation 1 | "btn_save" | 5 | "Sauvegarde" | "2009-10-26 09:20:54" 2 | "btn_cancel" | 3 | "Annuler" | "2009-10-26 09:23:54" 381 | "title_projet" | 374 | "Projet" | "2009-11-26 15:53:25.204" 1 | "btn_save" | 379 | "Sauvegarder" | "2009-11-26 15:55:09.204" 380 | "title_cle" | 602 | "Projet" | "2009-12-03 11:47:01.598" 610 | "title_rbundle" | 621 | "RBundle" | "2009-12-03 12:17:26.943" 1 | "btn_save" | 20 | "Sauveg" | "2009-12-03 12:17:26.943"
Toutefois, je veux au final une unique traduction par idCle et dans mes résultats j'ai trois enregistrements pour l'idcle 1
J'ai donc complété ma requête :
Seulement, mes résultats sont identiques aux précédents !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select c.idcle, c.libelle as libelleCle, vt.idversiontraduction,vt.valeur as valeurTraduction, vt.datecreation from VersionTraduction vt, Cle c where vt.fk_langue= 1 and vt.fk_etat <> 2 and vt.fk_etat <> 4 and vt.fk_cle = c.idcle and fk_cle in (select cle.idcle from cle cle where cle.fk_projet = 1 ) group by vt.idversiontraduction,vt.valeur, vt.datecreation, c.idcle, c.libelle having vt.datecreation = (select max(vt2.datecreation) from versiontraduction vt2 where vt.idversiontraduction = vt2.idversiontraduction)
Comment faire pour ne garder vraiment que LE DERNIER enregistrement pour un idcle donné ?
Merci d'avance pour votre aide
Partager