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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MYSQL] ORDER BY la plus petite de deux valeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MYSQL] ORDER BY la plus petite de deux valeurs

n°1579573
finntroll
Posté le 26-06-2007 à 20:03:54  profilanswer
 

Hello à tous !
 
J'aimerias savoir comment faire pour trier des requêtes MySQL par... la plus petites de deux valeurs.
 
Un truc qui doit ressembler à ça :
 
SELECT * from la_base ORDER BY min(rabais_site1, rabais_site2)
 
 
une idée ?

mood
Publicité
Posté le 26-06-2007 à 20:03:54  profilanswer
 

n°1579580
cgo2
Dum spiro spero
Posté le 26-06-2007 à 20:28:43  profilanswer
 

ben à priori ça, ça devrait fonctionner :
 
select min(v1, v2) as valeur from la_base order by valeur


---------------
When it's from Finland it's good.  - Mon blog
n°1579598
finntroll
Posté le 26-06-2007 à 21:20:07  profilanswer
 

et pour quelque chose que je pourrais utiliser avec mysql_fetch_array ça donnerait quoi ? paske là ça selectionne pas toutes les entrées, non ?


Message édité par finntroll le 26-06-2007 à 21:21:49
n°1580342
finntroll
Posté le 28-06-2007 à 13:12:10  profilanswer
 

qqun sait ?

n°1580344
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-06-2007 à 13:20:43  profilanswer
 

min est une fonction d'aggregation et non de comparaison des valeurs au sein d'un même recordset. ça ne peut donc pas fonctionner comme vous l'esperer.
tu peux par contre faire quelque chose dans le genre:

Code :
  1. select
  2. case when v1 > v2 then v1 else v2 end as toto
  3. ...
  4. from
  5. tatable
  6. order by
  7. toto

n°1580364
MagicBuzz
Posté le 28-06-2007 à 14:21:44  profilanswer
 

hier quand j'ai vu ce topic j'ai fait une crise cardiaque, au point d'en oublier de répondre :D
 
(spa trop la question qui ma tué, c'est surtout la réponse qui m'a achevé :D)
 
merci anapajari :jap:

n°1580418
cgo2
Dum spiro spero
Posté le 28-06-2007 à 15:10:17  profilanswer
 

anapajari a écrit :

min est une fonction d'aggregation et non de comparaison des valeurs au sein d'un même recordset. ça ne peut donc pas fonctionner comme vous l'esperer.


 
rha quel boulet, je voulais dire "il faut faire l'opération dans le select avec un alias et faire le order by sur l'alias", et j'ai même pas fait gaffe que min ça fonctionnerait pas dans ce cas. :pt1cable:


---------------
When it's from Finland it's good.  - Mon blog
n°1580531
finntroll
Posté le 28-06-2007 à 17:56:40  profilanswer
 

merci énormement  :jap:


Message édité par finntroll le 28-06-2007 à 17:56:52
n°1580793
finntroll
Posté le 29-06-2007 à 13:35:04  profilanswer
 

ça marche pas..
 
SELECT case when reduction_base > reduction_full then reduction_base else reduction_full end as reduction FROM premcar_vehiculesdispo ORDER by reduction;
 
 
me renvoie pas l'entier des entrées quand je fais mysql_fetch_array ! ça me renvoie uniquement une valeur appellée reduction, mais sans ce que y'a autour... comment s'y prendre ?


Message édité par finntroll le 29-06-2007 à 13:40:31
n°1580794
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-06-2007 à 13:41:17  profilanswer
 

comprendre le sql et mettre les champs dont on a besoin dans le select?

mood
Publicité
Posté le 29-06-2007 à 13:41:17  profilanswer
 

n°1580795
ZeBix
edit > preview
Posté le 29-06-2007 à 13:46:16  profilanswer
 

J'ai l'impression que tu ne te rends pas exactement compte de ce que le mysql_fetch_array() fait .... : il met dans un tableau associatif et indexé numérique, UN row de fields de ton recordset..

 

Le Select que tu as fait ici te renvoie donc uniquement "reduction" puisque c'est la seule valeur que tu select.

 

Je ne sais pas si tu as le droit de combiner des champs traditionnels une fois que tu as fait un case dans le select, donc au risque de me trouver responsable de la mort de quelqu'un par crise cardiaque, essaye un truc comme ça :

 
Code :
  1. Select case when tralala > tralali then tralala else tralali as youtouchmytralala, champ2, champ3, champ4 from tatable order by youtouchmytralala
 

où champ2, 3 et 4 sont tous les autres champs que tu veux


Message édité par ZeBix le 29-06-2007 à 13:47:43
n°1586348
finntroll
Posté le 13-07-2007 à 17:54:57  profilanswer
 

c'est possible de mettre  
 
Select case when tralala > tralali then tralala else tralali as youtouchmytralala, * from tatable order by youtouchmytralala
 
ou pas ?

n°1586418
mrbebert
Posté le 13-07-2007 à 21:20:46  profilanswer
 

Oui.
(par contre, évite qu'il y ait un champ nommé youtouchmytralala dans la table, sinon ca risque de compliquer les choses)
 
Sinon, le "case" que tu utilises, ce serait pas la définition d'un max() au lieu d'un min() ?!? :whistle:


Message édité par mrbebert le 13-07-2007 à 21:21:23
n°1586446
HappyHarry
Posté le 13-07-2007 à 23:33:09  profilanswer
 

en sql server on peut très bien utiliser case dans la clause order by d'une requete, à voir si ca fonctionne aussi en MySQL [:dawa]
 
select * from <table> order by case when rabais_site1 > rabais_site2 then rabais_site2 else rabais_site1 end
 
à condition que les deux champs soient du même type ou qu'une conversion puisse se faire


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

  [MYSQL] ORDER BY la plus petite de deux valeurs

 

Sujets relatifs
Mysql : script avec tables en majuscules --> tables crées en minusculeVBS ajouter un élément dans une table MYSQL
[WINDOWS XP] - Ne recherche plus - dev pour petite appli facturationPb de table mysql corrompue
Le chinois et l'insertion mysql + regexbesoin d'aide pour requete mysql
[MySQl] erreur bizarre dans une requete[Mysql/PHP] variable avec des " et '
[MySql] Fulltext qui foireProblème d'insert into en masse MySql / Sql
Plus de sujets relatifs à : [MYSQL] ORDER BY la plus petite de deux valeurs


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