AIDE requete SQL - SQL/NoSQL - Programmation
Marsh Posté le 21-05-2008 à 17:37:11
Tu es sur quel SGBD ? Peut etre qqch comme ca :
SELECT id_M, nom_M, version_M, MAX(REPLACE(version_M, "," , "" ) FROM matable GROUP BY nom_M
Marsh Posté le 21-05-2008 à 18:25:57
prex
L'id n'est pas une information utile, si tu cherches l'aggregat d'un champs il ne faut pas mettre celui-ci dans ton selection et il manque des champs dans ton group.
Code :
|
Marsh Posté le 22-05-2008 à 08:16:42
je suis sous MySQL,
le problème c'est qu'il est possible qu'une machine revienne à une ancienne version.
Il me faudrait une requête qui renvoie un seul enregistrement par nom classé par date
Marsh Posté le 22-05-2008 à 11:23:41
Si la date suffit :
Code :
|
Marsh Posté le 22-05-2008 à 11:51:40
marchera pas
la requête ci dessous va remonter la "plus vielle" date pour un couple nom/version donnée, mais certainement pas "la dernière version" connu pour un nom.
Par ailleurs, il faut mettre toutes les colonnes non-agrégées dans le group by
Marsh Posté le 22-05-2008 à 12:10:56
j'ai trouvé une manip qui marche, je commence par récup tout les id qui marche
Code :
|
puis je boucle en faisant :
Code :
|
c'est un peu freestyle mais ça à l'air de marcher, merci de m'avoir orienté vers group by et max
Marsh Posté le 22-05-2008 à 12:16:51
anapajari a écrit : la requête ci dessous va remonter la "plus vielle" date pour un couple nom/version donnée, mais certainement pas "la dernière version" connu pour un nom |
Je n'ai jamais prétendu le contraire, tout dépend de ce que manik971 veut vraiment (pour moi ce n'est pas clair) :
Marsh Posté le 22-05-2008 à 12:28:26
si j'ai tout compris, il veut savoir "pour un id donné, quel est la version installée en dernier ( donc avec la date max )".
Il faut faire un sous-requete du style:
Code :
|
Marsh Posté le 23-05-2008 à 00:23:23
select id,nom,date,version from tatable a
where id = (select max(id) from tatable where a.nom = nom)
Marsh Posté le 21-05-2008 à 17:03:36
Bonjour,
voivi une exemple de table
j'ai un script en vb qui va lire tous les jours des infos sur des pc et les insert dans la table si les nouveaux enregistrements sont différents des anciens enregistrements.
ici par exemple, PC 1 et PC 3 ont 2 enregistrements car il y a eu une MAJ de version, mais je conserve dans la table l'historique, cad, les 2 enregistrements.
MA QUESTION =>
il me faut une requête SQL qui me permettent de sortir toutes les dernieres informations, par exemple ici toutes les lignes sauf la 1 et la 3.
Merci d'avance