MySQL : comment grouper les entrées puis les trier ?


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 17:13

Bonjour,

J'ai une table de ce type
Image
Et je voudrais obtenir une liste des meilleurs prix pour chaque modèle et classés par modèle, soit avoir le résultat suivant :

Audi A3 5600
Peugeot 308 2265
Renault Clio 1346
Renault Fluence 4635
Renault Kangoo 2569
Renault Twingo 1280

Je n'y arrive pas...
J'ai fait un SELECT DISTINCT avec un GROUP BY mais le GROUP BY me renvoie les valeurs qu'il veut.
J'ai fait avec une table temporaire mais ça marche pas.

Que faut il faire ? Une sous requête ?

Faut savoir aussi que la table contient 15 000 entrées (et que le résultat est mis en cache).

Merci à vous !


Marie-Aude
Modérateur
Modérateur
 
Messages: 11889
Inscription: 5 Juin 2006

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 17:36

De mémoire, il faut que tu définisses un champs supplémentaire, genre sum (mais vraiment de mémoire... :( )


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 18:30

Marie-Aude a une partie raison, sauf que ce n'est pas SUM mais MIN.

Code: Tout sélectionner
SELECT marque, modele, MIN(prix)
FROM TaTable
GROUP By modele
ORDER By marque ASC, modele ASC


Ceci devrait fonctionner.
Dernière édition par Blount le Lun Mar 21, 2011 18:32, édité 1 fois.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 20:04

Merci
Dernière édition par milkiway le Lun Mar 21, 2011 20:11, édité 1 fois.


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 20:11

De rien.

D'ailleurs, pour récupérer le prix plus facilement, il vaut mieux utiliser un alias :

Code: Tout sélectionner
SELECT marque, modele, MIN(prix) prix
FROM TaTable
GROUP By modele
ORDER By marque ASC, modele ASC


IllusionPerdu
WRInaute discret
WRInaute discret
 
Messages: 141
Inscription: 11 Mar 2006

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Lun Mar 21, 2011 23:46

Une petite correction pour la requete avec l'alias :
Code: Tout sélectionner
SELECT marque, modele, MIN(prix) AS minprix
FROM TaTable
GROUP By modele
ORDER By marque ASC, modele ASC


Le AS avais été oublier et il vaux mieux donner un autre nom au champ ;)


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Mar Mar 22, 2011 0:02

Merci mais pourquoi donner un alias dans ce cas?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Mar Mar 22, 2011 0:23

si tu veux le récupérer après avec mysql_fetch_array(). $value['minprix'] :)


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Mar Mar 22, 2011 9:13

IllusionPerdu a écrit:Une petite correction pour la requete avec l'alias :
Code: Tout sélectionner
SELECT marque, modele, MIN(prix) AS minprix
FROM TaTable
GROUP By modele
ORDER By marque ASC, modele ASC


Le AS avais été oublier et il vaux mieux donner un autre nom au champ ;)


Je ne vois pas de correction nécessaire.
  • le mot clé AS est optionnel
  • on peut tout à fait utiliser le même nom de champ. C'est un procéder que j'utilise régulièrement.


cedric_g
WRInaute accro
WRInaute accro
 
Messages: 3552
Inscription: 18 Jan 2006

Re: MySQL : comment grouper les entrées puis les trier ?

Message le Mar Mar 22, 2011 10:52

Bien que "AS" soit optionnel, je partage l'avis d'IllusionPerdu : ce sont des "bonnes pratiques" rendant le code plus lisible ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité