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


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

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.

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 ;)**

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)
:(

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

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 ?

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

@pluche

Pierre

Bonsoir Agnès merci pour ta réponse. HostGator DreamHost Bluehost