Requête SQL avec tri double et LIMIT

Bonjour,
Je suis en train de préparer une requête SQL qui me pose quelques soucis.
Voici la situation: un utilisateur arrive sur une page avec un problème ayant une note correspondant à sa gravité.
par exemple: $note_probleme = 8.12;

je fais une recherche dans une table de solutions pour lui proposer des solutions adéquates. Ma table est composée comme suit:
ID | intitule | note_solution
La note de solution est censée correspondre à celle du problème

Pour trouver les solutions adaptées, je fais une requête en prenant en compte la différence entre les deux notes:
ABS(note_solution - $note_probleme)

Je souhaite avoir les 6 résultats les plus pertinents donc: LIMIT 6

Ma requête est la suivante:
$requete="SELECT * FROM solutions ORDER BY ABS(note_solution_f - ".$note_boulette.") LIMIT 6";

Jusque là, tout va bien. Je souhaite maintenant afficher mes résultats dans l'ordre décroissant de note_solution. Là, je coince. J'espère que vous arez une solution à m'apporter.

D'avance, merci pour votre aide,
Antonio
Configuration: Windows XP
Firefox 3.6

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    tu veux trier par ordre décroissant de 'note_solution' ou de 'ABS(note_solution_f - ".$note_boulette.")' ?

    Pour note_solution, je pense qu'il te suffit d'ajouter un "ORDER BY note_solution DESC" avant ton LIMIT 6 :

    $requete="SELECT * FROM solutions ORDER BY ABS(note_solution_f - ".$note_boulette.") ORDER BY note_solution DESC LIMIT 6"; 


    Voila en espérant que ça t'aide :)
    1. peut-on mettre deux fois ORDER BY ?

      sinon essayes:

      $requete="SELECT * FROM solutions ORDER BY ABS(note_solution_f - ".$note_boulette."),note_solution DESC LIMIT 6";
      1. On ne peut pas mettre plusieurs fois, mais on peut ajouter des ORDERS avec des ","
        par exemple :

        SELECT nom, prenom, age FROM tbl_personnes ORDER BY nom, prenom DESC, age ASC ;