Order by qui est ignoré suite à un group by

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Order by qui est ignoré suite à un group by

Message le Sam Mar 24, 2007 2:02

Bonjour

2 tables une contenant un enregistrements et l'autre contenant 20 enregistrements . Les deux tables sont liés par un champ nommé SID .

Je souhaite faire une requete qui regroupe ces deux tables mais qui la trie selon un champ différent du group by .

Voici la requete :

Code: Tout sélectionner
SELECT * FROM vol_result LEFT JOIN vol_search ON (vol_result.sid = vol_search.sid) GROUP BY vol_result.sid ORDER BY vol_result.rprix


Cette requete lie correctement les deux tables mais le trie ne se fait pas en fonction de rprix mais de sid .

J'ai essayé toutes sortes de requetes mais j'ai tjrs le meme soucis pourtant je vois pas trop ce qui cloche .

Si quelqu'un voit le probleme ...


arnaudmn
WRInaute accro
WRInaute accro
 
Messages: 1483
Inscription: Mer Mai 11, 2005 18:20

Message le Sam Mar 24, 2007 8:26

Commence par remplacer le * par la liste des champs voulu.

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Sam Mar 24, 2007 11:18

sALUT ARNAUD


Ca ne marche pas pour autant , j'y avais pensé mais rien a faire ca récupérer toujours le premier SID et non pas le prix le plus bas .

Parcque c'est ce que je veux en fait , un listing des dix dernieres recherches de vols avec leur prix mini .

objectifweb
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 130
Inscription: Mer Oct 06, 2004 9:58

Message le Sam Mar 24, 2007 22:31

Bonjour,

Lorsque tu fais un group by, c'est automatiquement trié sur cette clef, donc ton order by ne sert à rien !

Patrick

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Dim Mar 25, 2007 17:01

Salut

J'ai remarqué effectivemment ca . C'est tout de meme fortement ennuyeux . J'ai tout essayé sous toues les formes mais rien a y faire .

Je pense que tous les exemples de requetes trouvés sur le web avec des group by puis des order by sont donc fausses !

C'est grave lol


arnaudmn
WRInaute accro
WRInaute accro
 
Messages: 1483
Inscription: Mer Mai 11, 2005 18:20

Message le Dim Mar 25, 2007 17:14

max6 a écrit:Salut

J'ai remarqué effectivemment ca . C'est tout de meme fortement ennuyeux . J'ai tout essayé sous toues les formes mais rien a y faire .

Je pense que tous les exemples de requetes trouvés sur le web avec des group by puis des order by sont donc fausses !


Amha t'as pas pigé a quoi sert un group by :-) C'est quand même pour regrouper des lignes d'une table et faire une opération éventuelle sur le résultat.

Si tu fais :
SELECT champ1, champ2, sum(champ3)
FROM unetable
group by champ1, champ2

Tu peux trier sur champ1, sur champ2 et même sur le résultat de la somme. TOUS les champs devraient soit être dans le group by, soit alors subir une opération. Mysql ne devrait même pas te permettre de faire un group by sans spécifier les champs dans le select.

Pour en revenir a ce que tu veux faire (ie les 10 vols avec le prix mini) :
SELECT vol_result.sid, min(vol_result.rprix)
FROM vol_result LEFT JOIN vol_search ON (vol_result.sid = vol_search.sid)
GROUP BY vol_result.sid
ORDER BY min(vol_result.rprix)
LIMIT 0,10


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités