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 :

Pas cap' de faire un CONNECT BY tout simple !


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 290
    Par défaut Pas cap' de faire un CONNECT BY tout simple !
    Bonjour,

    J'essaie de reproduire sur mon cas les requêtes utilisant le CONNECT BY PRIOR cités dans cet article (au passage, je ne m'intéresse pas du tout au passage vers DB2, mais seulement aux exemples Oracle), et je n'y arrive pas du tout

    Par exemple, la première requête donnée fonctionne très bien sur emp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT name 
    FROM emp
    START WITH name = 'Goyal'
    CONNECT BY PRIOR empid = mgrid
    Par contre, quand j'essaie de faire la même chose avec ma table, je n'obtiens qu'une seule ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select clef
    from testkk
    start with clef = 'COMCE0001200900-001'  
    connect by prior clef = clefsuiv
    Quelqu'un verrait-il où est l'erreur dans ma transposition ?

    Merci pour toute piste !
    ___

    Données de test :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    CREATE TABLE TESTKK
    (
      CLEF               VARCHAR2(20 CHAR),
      SCRGMOD_GMOD_CODE  VARCHAR2(1 CHAR)           NOT NULL,
      CLEFSUIV           CHAR(20 CHAR)
    ) ;
     
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('COMCE0001200900-001', 'D', NULL);
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('COMCE0001200900-002', 'V', 'COMCE0001200900-001 ');
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('COMCE0001200900-003', 'X', 'COMCE0001200900-002 ');
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('ECOAE0001200900-001', 'D', NULL);
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('ECOAE0001200900-002', 'V', 'ECOAE0001200900-001 ');
    Insert into TESTKK
       (CLEF, SCRGMOD_GMOD_CODE, CLEFSUIV)
     Values
       ('ECOAE0001200900-003', 'X', 'ECOAE0001200900-002 ');
    COMMIT;

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Facile, mais la réponse va entrainer une série de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Clef     = 'COMCE0001200900-001'
    ClefSuiv = 'COMCE0001200900-001 '
    AVEC UN ESPACE EN PLUS A LA FIN

    Donc, sans toucher aux données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        select level, tk.*
          from testkk tk
    START with tk.clef = 'COMCE0001200900-001'  
    CONNECT by prior tk.clef = trim(tk.clefsuiv)
     
         LEVEL CLEF                 S CLEFSUIV            
    ---------- -------------------- - --------------------
             1 COMCE0001200900-001  D                     
             2 COMCE0001200900-002  V COMCE0001200900-001 
             3 COMCE0001200900-003  X COMCE0001200900-002

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Rhoooo, Antoun m'enfin !!!

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 290
    Par défaut
    Citation Envoyé par Waldar Voir le message
    AVEC UN ESPACE EN PLUS A LA FIN


    bon,

    merci pour le coup d'oeil, tout marche bien maintenant !

    Citation Envoyé par McM Voir le message
    Rhoooo, Antoun m'enfin !!!


    bah quoi ? moi aussi j'ai le droit de faire le

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

Discussions similaires

  1. Je n'arrive pas à faire une boucle toute simple?
    Par Ouass dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2008, 14h17
  2. Réponses: 1
    Dernier message: 19/02/2006, 19h52
  3. Réponses: 2
    Dernier message: 07/07/2005, 08h31
  4. [Pl/SQL] Procédure devant faire se connecter à 2 bases
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 26
    Dernier message: 26/05/2005, 11h15

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