[Linux-bruxelles] Requete MySQL avec recherche de maximum

Yannick Warnier ywarnier at beeznest.org
Jeu 26 Aou 01:42:48 CEST 2004


Le mer 25/08/2004 à 18:44, philippe a écrit :
> Le mer 25/08/2004 à 16:21, Yannick Warnier a écrit :
> > Le mer 25/08/2004 à 13:49, Philippe Beaujean a écrit :
> > > Bonjour,
> > > 
> > > j'ai une table où je reprends des noms de fichiers et leur version.
> > > Exemple simplifié :
> > > 
> > >  -----------------------------------------------
> > > | Nom de fichier | Version N° | Type de fichier |
> > > |-----------------------------------------------|
> > > | Fichier 1      | 1          | swx             |
> > > |-----------------------------------------------|
> > > | Fichier 1      | 2          | swi             |
> > > |-----------------------------------------------|
> > > | Fichier 1      | 3          | swc             |
> > > |-----------------------------------------------|
> > > | Fichier 1      | 4          | swc             |
> > > |-----------------------------------------------|
> > > | Fichier 2      | 1          | swx             |
> > > |-----------------------------------------------|
> > > | Fichier 2      | 2          | pdf             |
> > >  -----------------------------------------------
> > > 
> > > Je ne parviens pas à identifier la requête MySQL pour avoir en réponse :
> > > 
> > >  -----------------------------------------------
> > > | Nom de fichier | Version N° | Type de fichier |
> > > |-----------------------------------------------|
> > > | Fichier 1      | 4          | swc             |
> > > |-----------------------------------------------|
> > > | Fichier 2      | 2          | pdf             |
> > >  -----------------------------------------------
> > > 
> > > Soit, en français, rechercher les lignes de la table, groupées par
> > > "Nom de fichier" où la Version N° est maximum.
> > 
> > GROUP BY (syntaxe MySQL):
> > SELECT `Nom de fichier`, max(`Version N°`) GROUP BY `Nom de fichier`;
> > 
> > Yannick
> > 
> 
> Merci Yannick. C'est ce que j'avais déjà fait, et cela ne prend pas le
> bon "Type de fichier". En fait, cette requête prend le bon "Nom de
> fichier" (normal ;-)), identifie la bonne version, mais prend le type de
> fichier du premier enregistrement valide rencontré, soit, dans notre
> cas, Fichier 1->swx (et non swc), Fichier 2->swx (et non pdf).
> 
> Une autre idée ?

Il faut savoir avouer sa défaite il paraît... :-)
Je ne trouve pas. J'ai retourné le query dans tous les sens permis par
mon modeste MySQL version 4.0.18... pas moyen. 

Il me faut des subqueries ou d'autres tables, comme le suggère Gaëtan. 
Cela dit c'est l'une des raisons pour lesquelles je n'aime pas MySQL
(l'une des autres étant la licence spéciale pour utilisations
commerciales).

Pourquoi ne pas utiliser PostgreSQL...?

Yannick





Plus d'informations sur la liste de diffusion Linux-bruxelles