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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  AIDE requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AIDE requete SQL

n°1735323
manik971
Posté le 21-05-2008 à 17:03:36  profilanswer
 

Bonjour,
 
voivi une exemple de table  
 
http://www.monsterup.com/upload/1211381847.jpg
 
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 :)
 

mood
Publicité
Posté le 21-05-2008 à 17:03:36  profilanswer
 

n°1735346
babasss
Posté le 21-05-2008 à 17:37:11  profilanswer
 

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


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1735354
anapajari
s/travail/glanding on hfr/gs;
Posté le 21-05-2008 à 18:25:57  profilanswer
 

prex :o
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 :
  1. SELECT nom_M, MAX(version_M) FROM matable GROUP BY nom_M


Message édité par anapajari le 21-05-2008 à 18:27:14

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1735488
manik971
Posté le 22-05-2008 à 08:16:42  profilanswer
 

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

n°1735556
babasss
Posté le 22-05-2008 à 11:23:41  profilanswer
 

Si la date suffit :

Code :
  1. SELECT id_M, `nom_M`, MAX(`date_M`), version_M FROM `test1` GROUP BY nom_M


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1735577
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-05-2008 à 11:51:40  profilanswer
 

marchera pas :o
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


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1735600
manik971
Posté le 22-05-2008 à 12:10:56  profilanswer
 

j'ai trouvé une manip qui marche, je commence par récup tout les id qui marche
 

Code :
  1. SELECT MAX(id_M) from matable GROUP BY nom_M


puis je boucle en faisant :

Code :
  1. SELECT * FROM maTable WHERE id_M='id_constante'


c'est un peu freestyle mais ça à l'air de marcher, merci de m'avoir orienté vers group by et max :)

n°1735609
babasss
Posté le 22-05-2008 à 12:16:51  profilanswer
 

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) :

  • La ligne avec la date la plus récente ?
  • La ligne avec la version la plus récente ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1735613
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-05-2008 à 12:28:26  profilanswer
 

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 :
  1. SELECT
  2. a.id,
  3. a.nom,
  4. a.version
  5. FROM
  6. tatable
  7. WHERE
  8. EXISTS (
  9.  SELECT
  10.    b.id,
  11.    max(b.date)
  12.  FROM
  13.    taTable b
  14.  WHERE
  15.    b.id = a.id
  16.   HAVING
  17.    ax(b.date) = a.date  
  18.   GROUP BY id
  19. )


Message édité par anapajari le 22-05-2008 à 12:28:50

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1735670
manik971
Posté le 22-05-2008 à 14:17:50  profilanswer
 

oui je veux la ligne avec la date la plus récente

mood
Publicité
Posté le 22-05-2008 à 14:17:50  profilanswer
 

n°1735943
gregdemons
Photo addict :)
Posté le 23-05-2008 à 00:23:23  profilanswer
 

select id,nom,date,version from tatable a
where id = (select max(id) from tatable where a.nom = nom)


---------------
GREGPHOTOS.BE - Galerie HFR

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

  AIDE requete SQL

 

Sujets relatifs
[Résolu] Aide requête SQL: item n'appartenant pas à une catégorieAide sur requete SQL avec variable PHP
Besoin d'aide pour requête SQL[SQL] Besoin d'aide sur les attributs pour une requete
[résolu] Besoin d'aide pour écrire une requête SQL compliquéeAVIS e AIDE sur Requete SQL
pblm de requete SQL besoin aide !!![Sql] Besoin d'aide pour une requête ( simple pourtant ... ) [résolu]
[SQL] aide pour une requete contenant MIN,MAX et COUNTAide requête SQL Access
Plus de sujets relatifs à : AIDE requete SQL


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