Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1871 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Résolu] - [SQL] probleme de requetage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] - [SQL] probleme de requetage

n°1840068
bob_eponge
Posté le 19-01-2009 à 16:24:54  profilanswer
 

Salut, Salut  :hello:  
 
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 :D )
 
Pour commencer, le shema de la BD :
http://img132.imageshack.us/img132/3065/66539905fk0.th.gif
 
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
mood
Publicité
Posté le 19-01-2009 à 16:24:54  profilanswer
 

n°1840075
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 19-01-2009 à 16:32:16  profilanswer
 

je ferai  

Code :
  1. select version_instance.*,instance.*
  2. from instance, version_instance
  3. where version_instance.idinstance=instance.idinstance
  4. instace.idinstance='monidinstance'
  5. order by date_debut_validite desc //classe de la plus grande date a la plus petit
  6. limit 0,1//garde juste la premiere


 
apres peut etre qu'avec les min et max ca marche aussi

Message cité 1 fois
Message édité par infoman64 le 19-01-2009 à 16:33:36
n°1840095
bob_eponge
Posté le 19-01-2009 à 16:54:20  profilanswer
 

infoman64 a écrit :

je ferai  

Code :
  1. select version_instance.*,instance.*
  2. from instance, version_instance
  3. where version_instance.idinstance=instance.idinstance
  4. instace.idinstance='monidinstance'
  5. order by date_debut_validite desc //classe de la plus grande date a la plus petit
  6. limit 0,1//garde juste la premiere


 
apres peut etre qu'avec les min et max ca marche aussi


 
 
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.
 

n°1840148
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 19-01-2009 à 17:45:32  profilanswer
 

ah ok désolé j'avais pas compris
c'est vrai que ca rend le truc un peu plus chaud

n°1840383
Tibar
Posté le 20-01-2009 à 11:54:13  profilanswer
 

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,


Message édité par Tibar le 20-01-2009 à 11:55:22
n°1840394
bob_eponge
Posté le 20-01-2009 à 12:07:49  profilanswer
 

Mon cerveau te remercie :D

n°1840506
Tibar
Posté le 20-01-2009 à 15:00:27  profilanswer
 

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...

n°1840526
bob_eponge
Posté le 20-01-2009 à 15:18:15  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Résolu] - [SQL] probleme de requetage

 

Sujets relatifs
Help me : problème de date/heure du moment en php[python]transformer une ip hex en decimal [résolu]
[SQL] mise a jour via 2 tablesafficher une image probleme
[résolu] efficacité avec les containers STL[Résolu] Inclure les dll Qt dans l'executable.
[Resolu] Comment faire une zone cliquable de forme polygonale?[Résolu] Comment lister plusieurs contenus de dossiers sur une page ?
[Java] Problème de lecture dans un fichierProblème avec Joomla
Plus de sujets relatifs à : [Résolu] - [SQL] probleme de requetage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR