Classement d'une table par numéro comme plan comptable

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 : Classement d'une table par numéro comme plan comptable

par Sékiltoyai » 31 juil. 2007, 14:34

Ah, bah après, cest à lui de correctement conceptualiser son machin.

par d0m » 31 juil. 2007, 13:36

Là j'ai des doutes, avec un CAST, normalement 111, il est transformé en la chaine '111'
Je parlais niveau conceptuel, c'est bien beau avec peu de parties et sous parties mais imaginons qu'il y ai plus de 9 sous parties, avec la méthode des entiers il n'y aucun moyen de différencier
1.11 de 11.1 de 1.1.1 de 111

par Sékiltoyai » 31 juil. 2007, 13:32

Là j'ai des doutes, avec un CAST, normalement 111, il est transformé en la chaine '111'

par d0m » 31 juil. 2007, 13:26

et il y a en plus ce problème :
111
peut être interprété comme :
1.11
1.1.1
11.1
111

par Sékiltoyai » 31 juil. 2007, 13:14

Dryzd, permet moi de te conseiller d'utiliser la solution proposée par d0m car, si je ne me trompe, avec un CAST, un index sur le champ en question est inutilisable, et donc si tu as des tables conséquentes, une requète de tri qui prendrait quelques millièmes de seconde avec un index, prendra des dixièmes de secondes voire des secondes sans index.
L'idéal serait donc d'utiliser une colonne varchar indexée, pour optimiser les tris et sélections.

par Truc » 31 juil. 2007, 11:27

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

Réponse

par Dryzd » 31 juil. 2007, 11:19

Merci de cette proposition.
J'ai profité du temps que j'avais pour chercher. Et j'ai trouvé une réponse plus adaptée, je trouve.
Il suffit, dans la requête de rajouter :
ORDER BY CAST(nom_du_champ AS CHAR)

Et ca fonctionne !
Peut-être que ca pourra servir à d'autres ;)

Merci encore et sûrement à bientôt

Dryzd

par d0m » 31 juil. 2007, 11:10

forcement ton premier champ est un entier, si tu lui demandes de les ordonner il ne va pas placer 11 avant 2.

J'ai utilisé le même genre de numérotation et j'ai crée un champ non pas d'entier mais de chaine de caractère (varchar) avec les numéro séparés par des points.
Et j'y ai mis la numérotation sous cette forme :
'1'
'1.1'
'1.2'
'2'
'2.1'
....

Et là en faisant en ordonnant le résultat de la requête sur ce champ ca marche comme tu le veux.

Classement d'une table par numéro comme plan comptable

par Dryzd » 31 juil. 2007, 10:45

Bonjour ;)

J'essaie désespérement de classer le résultat d'une requête mais je n'y arrive pas. Je m'explique. La table contient qqch comme ca (enregistré dans le désordre) :
221 - A
1 - J
21 - F
12 - C
11 - B
2 - K
22 - L
3 - I
...
Je voudrais qu'une requête me retourne ça (classement comme le plan comptable) :
1 - J
11 - B
12 - C
2 - K
21 - F
22 - L
221 - A
3 - I
...

Mais, et c'est là où j'ai besoin de votre aide, lorsque je boucle sur le résultat pour l'afficher, j'ai ça(classement informatique des valeurs, logique):
1 - J
2 - K
3 - I
11 - B
12 - C
21 - F
22 - L
221 - A
...

Est-ce que vous avez une idée du comment du pourquoi de la chose ?

Merci d'avance de votre aide ;=)

Dryzd