Aller au contenu

Inverser le résultat d'un select asc


Sujets conseillés

Posté

Bonsoir,

Exemple:

Une table avec 10 entrées de 0 à 9.

Je dois prendre les 3 entrées suivante quand chiffre > 5 par ordre décroissant.

Si je fais un ASC, je sélectionne 6, 7, 8.

Si je fais un DESC, je sélectionne 9, 8, 7.

Bref, je sèche.

Comment prendre 8,7,6.

Merci

Posté (modifié)

Je ne vois pas d'autre solution que de gérer les résultats avec un array en PHP.

Tu ressorts tes résultats 6,7 et 8 avec ta requête, et dans le traitement, tu les stockes dans un array en php.

Ensuite, il te suffit d'utiliser la fonction krsort de PHP, pour inverser l'ordre des clés du tableau.

Modifié par captain_torche
Posté (modifié)

Mais qu'il faudra coupler avec un petit relooking de la requête :

Si tu sais que tu ne dois prendre que trois résultats strictement supérieurs à 5, il te suffit de faire une manip du genre :

<?php
$debut = 5;
$nb_res = 3;
$fin = $debut+$nb_res;
$sql = "SELECT * FROM tatable WHERE id <= $fin ORDER BY id DESC LIMIT $nb_res";
?>

Modifié par captain_torche
Posté

Héhé, ça aurait été trop simple...

Bon, ej vais mettre ce que j'ai et ce que je veux.

Une table de news

/**id**/**date**/**texte**/**valid**/

La news est édité seulement si valid =1

La date est à l'origine la date d'insertion de la news, mais elle est modifié en la date de validation si la news est validée.

Donc, par exemple, j'ai 10 news comme ceci

/**id**/**date**/**texte**/**valid**/

/...0..../..1 mai.../......bla...../.....1....../

/...1..../..2 mai.../......bla...../.....1....../

/...2..../..3 mai.../......bla...../.....1....../

/...3..../..4 mai.../......bla...../.....1....../

/...4..../..5 mai.../......bla...../.....1....../

/...5..../..1 mai.../......bla...../.....0....../

/...6..../..6 mai.../......bla...../.....1....../

/...7..../..3 mai.../......bla...../.....0....../

/...8..../..7 mai.../......bla...../.....1....../

/...9..../..8 mai.../......bla...../.....1....../

Je veux afficher les 2news après le 4 mai.

Mais elles doivent être validé et par ordre décroissant.

Soit les 8, 6.

Si je fait un DESC, j'ai 9, 8.

Si je fait un ASC, j'ai 6, 8.

Donc, je dois prendre le ASC et l'inverser.

Dans ce cas, les limit ne peuvent rien de plus, je vais donc me rabattre sur krsort

Merci

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...