J'ai un site marchand. A l'affichage d'une catégorie, les articles sont pour le moment triés par ordre alphabétique.
Quand un article est épuisé (quantité <=0) au lieu du bouton "Acheter", j'ai une image "Epuisé". Du coup, quand dans une catégorie, j'ai pas mal d'articles épuisés, ceux qu'on peut acheter se retrouvent noyés au milieu des épuisés.
J'aimerai donc afficher en premier, par ordre alphabétique ceux qui ont une quantité >0, puis les autres, par ordre alphabétiques aussi.
Je ne peux donc pas juste trier par quantité, ne voulant pas spécialement mettre en avant les produits que j'ai le plus en stock.
Je simplifie la requete que j'ai actuellement par celle ci-dessous (en réalité y'a des jointures et tout, mais ce n'est pas le problème vu que c'est dans le ORDER BY que je ne trouve pas) :
<?
$sql="SELECT nom,qte FROM products WHERE cat=$cat ORDER BY nom";
?>
En inversant l'ordre ça ne résout pas le problème.
Les articles seront dans classés de l'article ayant le plus de stocks à celui en ayant le moins, et si certains ont la même quantité, ils seont classé par ordre alphabétique.
J'aurai ça :
Tab 8
Lab 6
Sub 6
Paf 3
Lac 0
Alors qu'il faudrait
Lab 6
Paf 3
Sub 6
Tab 8
Lac 0
Non, ce qu'il me faut c'est une requète avec une condition, mais je ne sais pas le faire.
Perso je séparerai les deux jeux de données (=0 et <>0), puis je ferai un UNION pour récupérer le résultat final
SELECT nom, qte
FROM products
WHERE cat=$cat
AND qte <> 0
ORDER BY nom, qte desc
UNION
SELECT nom, qte
FROM products
WHERE cat=$cat
AND qte = 0
ORDER BY nom
(Je ne suis pas sûr que ça fonctionnera, peut-être que MySQL va râler à cause des ORDER BY et UNION)
Une autre solution:
SELECT nom, qte, qte <> 0 AS order_field
FROM products
WHERE cat=$cat
ORDER BY qte <> 0, nom, qte DESC
(Je ne sais pas si MySQL oblige les champs de ORDER BY à se trouver dans SELECT, mais la norme oui donc je l'ai fait :p)
SELECT *
FROM products
WHERE cat=$cat
ORDER BY (NOT qte), nom
Pour avoir les ruptures de stock à la fin...
Tri croissant, 0 à la fin
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales