tris ascendants et descendants

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : tris ascendants et descendants

par Ryle » 20 févr. 2007, 18:08

Les critères de tris se cumulent si tu les ajoutes. Si tu veux les modifier, il faut les changer d'ordre :

ORDER BY V_KM, V_MILLESIME DESC, PV_TTC
=> tri d'abord par km, ensuite par millesime puis par pv.

ORDER BY V_KM
=> tri par km

ORDER BY V_MILLESIME DESC
=> tri par millesime décroissant

ORDER BY V_MILLESIME ASC, V_KM
=> tri par millesime croissant, puis par km

par Invité » 20 févr. 2007, 17:34

le kilométrage, l'année et le prix sont complètement variables. S'il y a deux fois le même kilométrage dans le champ V_KM, c'est un pur hasard.
Mais j'ai du mal à voir où tu veux en venir...avec ce que tu dis, je comprends qu'on ne peut pas trier un champ si les valeurs contenues ne sont pas identiques...ça serait surprenant non?

par Ryle » 20 févr. 2007, 17:17

EDIT : bon, je viens de voir que c'était pas la 1ere page du post :?
ma réponse n'apporte donc rien :oops:
Désolé 8-|
Ouais, mais ça fait toujours plaisir de te lire :)

(toujours se mettre dans les petits papiers des dieux ;))

par zeus » 20 févr. 2007, 16:55

Code : Tout sélectionner

ORDER BY V_KM, V_MILLESIME DESC, PV_TTC
Quand un SGBD lit ce code, il va trier les résultats selon le 1er champ donné (V_KM), puis, s'il trouve plusieurs enregistrements pour lesquels V_KM contient la même valeur, il va trier sur le 2nd champ (V_MILLESIME), et, s'il trouve plusieurs enregistrements pour lesquels les valeurs du couple V_KM-V_MILLESIME sont identiques, il passera au champ suivant.

Est-ce que tu as bien plusieurs enregistrements pour lesquels V_KM est identiques ?


EDIT : bon, je viens de voir que c'était pas la 1ere page du post :?
ma réponse n'apporte donc rien :oops:
Désolé 8-|

par Invité » 20 févr. 2007, 16:33

pareil quand je teste directement dans phpmyadmin, tri uniquement sur le premier champ, mais pas d'erreur.

par Invité » 20 févr. 2007, 16:27

bon, je poste ma requete telle qu'elle est avec un echo $query
SELECT * FROM occasions WHERE PV_TTC != 0 ORDER BY V_KM, V_MILLESIME DESC, PV_TTC 
j'ai beau interchanger les asc et desc, seul le tri du premier champ après ORDER BY est pris en compte.

par Invité » 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é.

par Invité » 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...

par Ryle » 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 ;)

par albat » 20 févr. 2007, 15:17

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

par Invité » 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

par albat » 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:

par Invité » 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 

par albat » 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.

par Invité » 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é.