A voir également:
- [MySQL] order by Greatest ok mais pas Least
- Mysql community server - Télécharger - Bases de données
- Ok maps - Guide
- Dame de pique ok ✓ - Forum Jeux vidéo
- Probleme avec le jeu la dame de pîque ✓ - Forum Windows
- Play ok backgammon - Forum jeux en ligne
2 réponses
trouvé après quelques bidouilles : ORDER BY prix =0, IF( prix_promo, prix_promo, prix ) DESC
je comprends rien à la synthaxe mais ca fonctionne chez moi, alors si ca peut aider...
je comprends rien à la synthaxe mais ca fonctionne chez moi, alors si ca peut aider...
Voici une autre méthode. Cela se fait au niveau du SELECT. On va créer une colonne virtuelle par exemple prixPlusBas.
Pour cela on doit s'assurer que la valeur de la colonne prixPromo n'est pas égale à 0. Sinon le prixPromo à 0 qui n'est pas une vraie promo sera toujours affiché avant les autres vraies promos. C'est en fait ce problème que tu cherches à contourner.
Donc analyse ce que retourne LEAST. Si il retourne zéro on utilise la valeur du prix normal (nommons le prixTarifBase), si il ne retourne pas zéro on utilise le résultat donné par LEAST (c'est-à-dire la plus petite des deux valeurs).
Pour cela on place un IF et la valeur récupérée dans la sortie de valeur prixPlusBas.
Voici comment cela s'écrit :
if ((LEAST(prixTarifBase,prixPromo)>0),prixPromo,prixTarifBase) As prixPlusBas
C'est simple quand on a l'explication.
Dernière étape, dans la clause ORDER, utiliser la colonne virtuelle prixPlusBas pour classer ses résultats. Cela fonctionne même avec les anciennes versions de MySQL.
Pour cela on doit s'assurer que la valeur de la colonne prixPromo n'est pas égale à 0. Sinon le prixPromo à 0 qui n'est pas une vraie promo sera toujours affiché avant les autres vraies promos. C'est en fait ce problème que tu cherches à contourner.
Donc analyse ce que retourne LEAST. Si il retourne zéro on utilise la valeur du prix normal (nommons le prixTarifBase), si il ne retourne pas zéro on utilise le résultat donné par LEAST (c'est-à-dire la plus petite des deux valeurs).
Pour cela on place un IF et la valeur récupérée dans la sortie de valeur prixPlusBas.
Voici comment cela s'écrit :
if ((LEAST(prixTarifBase,prixPromo)>0),prixPromo,prixTarifBase) As prixPlusBas
C'est simple quand on a l'explication.
Dernière étape, dans la clause ORDER, utiliser la colonne virtuelle prixPlusBas pour classer ses résultats. Cela fonctionne même avec les anciennes versions de MySQL.