probleme de requetage [Résolu] - [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 19-01-2009 à 16:32:16
je ferai
Code :
|
apres peut etre qu'avec les min et max ca marche aussi
Marsh Posté le 19-01-2009 à 16:54:20
infoman64 a écrit : je ferai
|
Merci mais ca ne correspond a ce que je veux faire.
je ne veux pas préciser instace.idinstance='monidinstance' mais plutot faire un group by pour avoir pour chaque instance les données de sa version la plus récente.
Marsh Posté le 19-01-2009 à 17:45:32
ah ok désolé j'avais pas compris
c'est vrai que ca rend le truc un peu plus chaud
Marsh Posté le 20-01-2009 à 11:54:13
Salut,
Je ne sais pas si ça fonctionne sous Oracle, mais j'aurai fait :
SELECT VERSION_INSTANCE.*
FROM VERSION_INSTANCE
INNER JOIN (
SELECT VI.Id_Version_Instance ID, MAX(VI.Date_Validite) MDV
FROM VERSION_INSTANCE VI
GROUP BY VI.Id_Version_Instance
) DRV ON DRV.ID = VERSION_INSTANCE.Id_Version_Instance
AND DRV.MDV = VERSION_INSTANCE.Date_Validite
Pour moi, ça doit ressortir toutes les données de chaque VERSION_INSTANCE les plus récentes.
Après, tu dois pouvoir faire ta jointure avec INSTANCE, du genre :
SELECT *
FROM VERSION_INSTANCE
INNER JOIN (
SELECT VI.Id_Version_Instance ID, MAX(VI.Date_Validite) MDV
FROM VERSION_INSTANCE VI
GROUP BY VI.Id_Version_Instance
) DRV ON DRV.ID = VERSION_INSTANCE.Id_Version_Instance
AND DRV.MDV = VERSION_INSTANCE.Date_Validite
INNER JOIN INSTANCE ON INSTANCE.Id_Instance = VERSION_INSTANCE.Id_Instance
Bon courage,
Marsh Posté le 20-01-2009 à 15:00:27
Pas de problème,
C'est bizarre le nombre de fois que ce problème se pose, et même en ayant la solution, j'ai toujours du "mal" avec cette syntaxe... D'ailleurs, je ne suis pas sur que ce soit la solution la plus simple ni la plus efficace, mais c'est toujours celle la que j'ai eu à appliquer pour ce genre de requête...
Marsh Posté le 20-01-2009 à 15:18:15
On est d'accord.
En commencant, je me disait que c'etait une requête toute conne, mais en fait pas du tout.
Je l'ai appliqué et ca marche parfaitement en tout cas
Marsh Posté le 19-01-2009 à 16:24:54
Salut, Salut
je me creuse la tête sur une espèce de requête que je n'arrive pas a écrire (c'est peut-être très facile mais là je fais un blocage )
Pour commencer, le shema de la BD :
Infos sur ce shema :
- c'est la table version_instance qui contient quasi ttes les infos d'une instance
- une instance a plusieurs version d'instance (en gros dès qu'on modifie un valeur de l'instance cela créé une nouvelle entrée dans la table version_instance)
- je suis sous oracle 10g
Et la requête que je cherche a faire :
Je veux lister pour chaque instance, toutes les données de sa version qui a la plus grande date_debut_validité.
C'est possible de faire ca en une seule requete ?
Merci par avance
Message édité par bob_eponge le 20-01-2009 à 15:50:28