IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Tri sur code hiérarchique


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Tri sur code hiérarchique
    Bonjour à tou(te)s,

    Je travaille sous oracle 8, forms 6

    J'ai une colonne 'code_wbs' (varchar2) dans une table 'etapes'.
    Je souhaite trier la table grâce à ce code hiérarchique (du style '1.3.2')

    Tout fonctionne avec la requête suivante :
    select code_wbs, titre from etapes order by code_wbs
    sauf quand j'arrive au dixième code,

    ça trie ainsi :
    1.3.1 blabla1
    1.3.10 blabla10
    1.3.1.1 blablabla
    ...

    au lieu de trier comme ça :
    1.3.1 blabla1
    1.3.1.1 blablabla
    ...
    1.3.10 blabla10
    ...

    Quelqu'un aurait-il une solution ?

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    La comparaison de chaînes de caratères compare le premier caractère de la première chaîne avec le premier caractère de la deuxième chaîne, puis passe au caratère suivant jusqu'à ce que la comparaison retourne TRUE ou FALSE.

    Il vous faudrait une autre colonne (non affichée dans laquelle vous gérez vos nombres de la façon suivante : 001.001.010) sur laquelle porterait la fonction de tri.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci

    mais je ne vois pas comment gérer le fait de rajouter des 0 devant les nombres, étant donné que je ne génère pas les codes hiérarchiques automatiquement...

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Créez la fonction suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE OR REPLACE FUNCTION Convert_Num_Chapitre
     (
       PC$Chaine in VARCHAR2
     ) RETURN VARCHAR2
    IS
     lc$ch varchar2(100) := PC$Chaine ;
     LC$Chaine  varchar2(100) ;
     ln$Pos pls_integer := 1 ;
     chiffre varchar2(10) ;
    Begin
     Loop
       ln$Pos := instr( lc$ch, '.' ) ;
       exit when ln$Pos = 0 ;
       chiffre := to_char( to_number( substr( lc$ch, 1, ln$pos - 1 ) ), '000' ) ;
       LC$Chaine := LC$Chaine || chiffre ;
       lc$ch := substr( lc$ch, ln$Pos + 1, 1000 ) ;
     End loop ;
     chiffre := to_char( to_number( lc$ch ), '000' ) ;
     LC$Chaine := LC$Chaine || chiffre ;
     
     Return (LC$Chaine ) ;
     
    End ;
    et utilisez-la dans la votre clause order by

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select code_wbs, titre from etapes order by Convert_Num_Chapitre(code_wbs )
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Hmm !
    Merci bien !
    Je vais m'y mettre de ce pas !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    CA MARCHE !

    MERCI !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ORDER BY]tri sur le dernier caractère d'un champ
    Par Tan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/05/2004, 14h39
  2. Réponses: 5
    Dernier message: 21/04/2004, 11h43
  3. Tri sur DBgrid
    Par julien41 dans le forum Bases de données
    Réponses: 21
    Dernier message: 19/02/2004, 17h33
  4. tri sur la xème colonne
    Par r-zo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/07/2003, 13h41
  5. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo