MySQL : Comment trier certaines rangées en 1ères positions ?

Par Perspikas, il y a 7 ans


Bonjour à tou(te)s,

J'aurai une question : comment fait-on pour trier son résultat de requête SQL, en plaçant certaines rangées (rows) en première position ?

Exemple : Une base de données factures.
Chaque facture a un statut de règlement représentée par une colonne "statut" dans ma table avec diverses valeurs possibles : payée, en attente, en retard...

Je voudrais que mon order by, soit non seulement basé sur l'id, mais aussi que le tri s'effectue de manière à placer les "EN RETARD" en première position de rangées (elles-mêmes classées par id).

C'est possible vous croyez ?
Merci de votre aide :)

8 réponses

Pierrot01, il y a 7 ans

Salut,
Bien sûr que c'est possible :D
d'ailleurs, à coeur vaillant, rien d'impossible :D :D

tu as la réponse ici

@pluche

Pierre

Perspikas, il y a 7 ans

Merci de ta réponse.

Hélas ca marche pas.

Ai-je fait une erreur ?

$querystr = "SELECT *
CASE
WHEN statut = RETARD THEN 2
WHEN statut = EN_ATTENTE THEN 1
WHEN statut = REGLEE THEN 0
END AS ordretri
FROM factures
LEFT JOIN clients ON (factures.client_id = clients.client_id)
ORDER BY ordretri DESC";
$results = $wpdb->get_results( $querystr , OBJECT );

Ca marchait avant que je ne modifie le code.
Et là, je n'ai plus rien qui s'affiche.

Pierrot01, il y a 7 ans

status est une string ?

dans ce cas WHEN statut = 'RETARD' THEN 2

@pluche

Pierre

*edit : regarde un peu ta reque !!!!!! select case ................ normal que rien ne fonctionne ;)**

Perspikas, il y a 7 ans

Je t'avoue ne pas avoir compris ton "edit", et j'ai toujours rien qui s'affiche malgré avoir mis les apostrophe sur les valeurs de "statut" (qui est un string en effet)
:(

Pierrot01, il y a 7 ans

il faut faire select champ1, champ2,champ......................
toi, tu fais select *case ..................
donc, y a obigatoirement une erreur de saint Axes :D dans la requète.

essaye de mettre une virgule après *

@plus

Pierre

Perspikas, il y a 7 ans

En fait je voulais prendre en compte tous les champs, et pas juste qq uns séparés par des virgules.

C'est pas possible ?

Pierrot01, il y a 7 ans

tu fais comme tu veux mon grand :D
enfin, si tu veux que ça fonctionne, vaut mieux bien faire ;)

@pluche

Pierre