Requête SQL avec tri double et LIMIT

leica69 Messages postés 16 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
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

  1. Defouille Messages postés 404 Statut Membre 54
     
    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 :)
    0
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    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";
    0
  3. Defouille Messages postés 404 Statut Membre 54
     
    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 ;

    0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    ben justement c'est ce que j'ai préconisé
    0