chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005
-
17 mars 2005 à 10:58
chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005
-
18 mars 2005 à 09:32
Salut les gens!
Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :
+-------------------------+
! MaTable !
+-------------------------+
! I D !
! Date !
! Variable !
+-------------------------+ par exemple.
Je voudrai récupérer les ID des dernières versions, c'est à dire, chaque ID dont la date est le maximal du groupe des valeurs ayant la même Variable
Je suis peut être pas clair... je réessaye :
immaginons que j'ai ces valeurs dans ma table :
ID ! Date ! Variable
----+-------+------------ la requête devrait me retourner :
1 ! 95 ! 1 4 'car de tous ceux qui ont Variable=1 c'est le + récent
2 ! 96 ! 1 3 'Car de tous ceux qui ont Variable=2 c'est le + recent
3 ! 94 ! 2
4 ! 98 ! 1
...
Merci d'avance,
et c'est décidé, un jour je parlerai SQL courament, mais au collège yavait pas, ils m'ont fait prendre Allemand...
__________________________________________________________
On ne devrait vivre qu'une minute et demie,
Le temps du premier baiser et du premier demi !
chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005 18 mars 2005 à 09:32
Ca y est voilà une solution qui marche :
SELECT Gestion_ID FROM [Gestion de la configuration] a
WHERE Systeme_ID= a.systeme_ID AND date (select top 1 Date from [Gestion de la configuration] b where b.Systeme_ID a.Systeme_ID order by b.date);
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 17 mars 2005 à 13:03
Il y a un Forum dédié à SQL sur CS ... va voir dans la rubrique Autres Langages du menu de gauche ... tu auras peut-être une foudre en SQL qui te répondra en 3s1/2
Christophe R
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 17 mars 2005 à 16:17
Une requête seule ne pourra faire ce travail. Tu peux te créer un stored procedure pour y arriver ou bien le coder en vb de la facon simple suivante :
SELECT * FROM maTable ORDER BY variable, date
Étant trié tu peux naviguer avec une boucle a travers ton recordset. Tu récupère les enregistrements pertinent dans un tableau ou une structure/classe a ton choix.
Aussitot que "variable" change de valeur, tu tombe automatiquement sur un bon id. Tu passe ensuite les autres enregistrements jusqu'à temps de tomber sur une autre variable. etc.
rst.open ("SELECT * FROM maTable ORDER BY variable, date"
variable = rst!variable
'tu me le premier record automatiquement dans ta struct
rst.nextrecord
for j=2 to rst.recordcount
if not (variable = rst!variable) then
'On a passé a la prochaine valeur de [variable]
variable = rst!variable
!tu met ce id en memoire dans ta struct
end if
rst.nextrecord
next j