Page 1 sur 2
tris ascendants et descendants
Posté : 20 févr. 2007, 14:00
par Invité
Bonour,
j'utilise un requete sql pour récupérer trois champs sur un véhicule: kilométrage, année et prix.
Par défaut, les résultats sont classé spar ordre ascendant de kilométrage:
SELECT * km, annee, prix FROM voitures ORDER BY km ASC
Comment faire pour trier sur tous les champs par ordre ascendant? En gros, la première voiture affichée doit être celle qui a en même temps: le kilomérage le plus bas, le prix le plus bas et l'année la plus basse en valeur.
Est ce qu'il suff it de faire:
SELECT * km, annee, prix FROM voitures ORDER BY km ASC, annee ASC, prix ASC
Je ne peux pas tester le code actuellement, merci pour vos réponses.
Posté : 20 févr. 2007, 14:02
par Invité
petite erreur dans le post, il n'y a pas de * après SELECT.
Posté : 20 févr. 2007, 14:14
par Invité
salut, je croit que la syntaxe SQL correcte est :
SELECT * km, annee, prix FROM voitures ORDER BY km, annee, prix ASC
Posté : 20 févr. 2007, 14:15
par Invité
oups, j'ai fait la même boulette que toi, y'a de * !
Posté : 20 févr. 2007, 14:18
par Invité
puis-je faire par exemple
SELECT * km, annee, prix FROM voitures ORDER BY km DESC, annee ASC, prix DESC
Posté : 20 févr. 2007, 14:39
par albat
Et si tu testais pour le vérifier ?...
Que fait cet * ici ???

Posté : 20 févr. 2007, 14:56
par Invité
j'ai précisé un peu plus haut qu'il ne fallait pas tenir compte du * , et que je ne pouvais malheureusement pas tester ma requete actuellement. je suis dans un cybercafé.
Posté : 20 févr. 2007, 15:05
par albat
Au temps pour moi, je n'avais pas vu cette précision.
$req = "SELECT km, annee, prix FROM voitures ORDER BY km DESC, annee ASC, prix DESC";
La syntaxe est correcte.
Posté : 20 févr. 2007, 15:06
par Invité
en général, d'après mon expérience sur ce forum, quand albat dit d'essayer, c'est que c'est un code qui fonctionnera
donc, oui ce code :
SELECT km, annee, prix FROM voitures ORDER BY km DESC, annee ASC, prix DESC
fonctionnera sans problème mais je te conseil plutôt de faire :
SELECT km, annee, prix FROM voitures ORDER BY km DESC, prix DESC, annee ASC
Posté : 20 févr. 2007, 15:10
par albat
en général, d'après mon expérience sur ce forum,
quand albat dit d'essayer, c'est que c'est un code qui fonctionnera

Pas trop ! Pas trop ! Je vais avoir les chevilles qui enflent...
Et puis, j'ai quand même le droit à l'erreur, hein ?
Même s'il est vrai que je n'en abuse pas ! 
Posté : 20 févr. 2007, 15:13
par Invité
pour quoi est-ce mieux? je pose la question car le tri va se faire sur action de l'utilisateur. Les ASC et DESC vont être ajoutés dynamiquement, dont les combinaisons asc/desc peuvent varier sur ces trois champs.
Une autre petite question. Ceci fonctionnera-til correctement?
SELECT * FROM voitures ORDER BY km DESC, annee ASC, prix DESC
Posté : 20 févr. 2007, 15:17
par albat
La syntaxe est correcte, mais le SELECT * est à éviter.
Posté : 20 févr. 2007, 15:27
par Ryle
Pas trop ! Pas trop ! Je vais avoir les chevilles qui enflent...
Et puis, j'ai quand même le droit à l'erreur, hein ?
Même s'il est vrai que je n'en abuse pas ! 
Ouais enfin il a dit que tes codes fonctionnent... pas qu'ils donnaient le résultat attendu
Ryle - Kiné pour chevilles de cox

Posté : 20 févr. 2007, 15:30
par Invité
ok, je suis de retour chez wam. Voici le résultat de mes tests:
Ma requête fonctionne quand je trie sur un seul champ, quel qu'il soit.
Dès que j'éssaye de trier sur 2 ou 3 champs avec la syntaxe évoquée plus haut, pas d'erreur mais pas de tri non plus...je précise que tous mes champs sont des entiers.
quelquechose m'échappe...
Posté : 20 févr. 2007, 15:56
par Invité
précision: lorque je fais un tri sur 3 champs, seul le tri sur le 1er champ est effectué.