Requête SQL avec tri double et LIMIT

Fermé
leica69 Messages postés 14 Date d'inscription vendredi 12 février 2010 Statut Membre Dernière intervention 20 février 2013 - 12 févr. 2010 à 11:45
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 12 févr. 2010 à 15:26
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
A voir également:

4 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
12 févr. 2010 à 14:36
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 févr. 2010 à 15:14
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
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
12 févr. 2010 à 15:23
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 févr. 2010 à 15:26
ben justement c'est ce que j'ai préconisé
0