ORDER BY la plus petite de deux valeurs [MYSQL] - SQL/NoSQL - Programmation
Marsh Posté le 26-06-2007 à 21:20:07
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 ?
Marsh Posté le 28-06-2007 à 13:20:43
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 :
|
Marsh Posté le 28-06-2007 à 14:21:44
hier quand j'ai vu ce topic j'ai fait une crise cardiaque, au point d'en oublier de répondre
(spa trop la question qui ma tué, c'est surtout la réponse qui m'a achevé )
merci anapajari
Marsh Posté le 28-06-2007 à 15:10:17
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.
Marsh Posté le 28-06-2007 à 17:56:40
merci énormement
Marsh Posté le 29-06-2007 à 13:35:04
ç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 ?
Marsh Posté le 29-06-2007 à 13:41:17
comprendre le sql et mettre les champs dont on a besoin dans le select?
Marsh Posté le 29-06-2007 à 13:46:16
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 :
|
où champ2, 3 et 4 sont tous les autres champs que tu veux
Marsh Posté le 13-07-2007 à 17:54:57
c'est possible de mettre
Select case when tralala > tralali then tralala else tralali as youtouchmytralala, * from tatable order by youtouchmytralala
ou pas ?
Marsh Posté le 13-07-2007 à 21:20:46
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() ?!?
Marsh Posté le 13-07-2007 à 23:33:09
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
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
Marsh Posté le 26-06-2007 à 20:03:54
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 ?