tris ascendants et descendants

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:00

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.

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:02

petite erreur dans le post, il n'y a pas de * après SELECT.

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:14

salut, je croit que la syntaxe SQL correcte est :
SELECT * km, annee, prix FROM voitures ORDER BY km, annee, prix ASC 

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:15

oups, j'ai fait la même boulette que toi, y'a de * !

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:18

puis-je faire par exemple
SELECT * km, annee, prix FROM voitures ORDER BY km DESC, annee ASC, prix DESC
 

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

20 févr. 2007, 14:39

Et si tu testais pour le vérifier ?... ;)

Code : Tout sélectionner

SELECT * km
Que fait cet * ici ??? :shock:

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 14:56

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é.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

20 févr. 2007, 15:05

Au temps pour moi, je n'avais pas vu cette précision. :oops:
$req = "SELECT km, annee, prix FROM voitures ORDER BY km DESC, annee ASC, prix DESC";
La syntaxe est correcte.

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 15:06

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 :P

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 

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

20 févr. 2007, 15:10

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 :P
Pas trop ! Pas trop ! Je vais avoir les chevilles qui enflent... :lol:

Et puis, j'ai quand même le droit à l'erreur, hein ? ;)

Même s'il est vrai que je n'en abuse pas ! :langue:

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 15:13

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

20 févr. 2007, 15:17

La syntaxe est correcte, mais le SELECT * est à éviter.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 févr. 2007, 15:27

Pas trop ! Pas trop ! Je vais avoir les chevilles qui enflent... :lol:

Et puis, j'ai quand même le droit à l'erreur, hein ? ;)

Même s'il est vrai que je n'en abuse pas ! :langue:
Ouais enfin il a dit que tes codes fonctionnent... pas qu'ils donnaient le résultat attendu :langue:

Ryle - Kiné pour chevilles de cox ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 15:30

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...

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2007, 15:56

précision: lorque je fais un tri sur 3 champs, seul le tri sur le 1er champ est effectué.