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 :

Obtenir la racine dans une requête récursive


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut Obtenir la racine dans une requête récursive
    Bonjour,

    Pour la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A
    |-B
    |-C
      |-D
      |-E
        |-F
    |-G
    H
    |-I
    |-J
    stockée dans une table.

    Je veux obtenir, via une requête SQL pour chaque enregistrement, non pas son parent direct, mais la racine de l'arbre, c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A
    |-B     ->  A
    |-C     ->  A
      |-D   ->  A
      |-E   ->  A
        |-F ->  A
    |-G     ->  A
    H
    |-I     ->  H
    |-J     ->  H
    J'ai réussi à le faire via cette requête :

    SELECT Substr(SYS_CONNECT_BY_PATH(Id,'-'),2,Instr(SYS_CONNECT_BY_PATH(Id,'-'),'-',1,2)-2 As IdRacine, Id
    FROM MaTable
    Start With Id In ('A','H')
    CONNECT BY PRIOR Id = IdParent;

    Je me demandais si je n'étais pas en train de faire une requête un petit peu compliquée, et s'il n'y avait pas une fonction Oracle qui retournait directement ce que je cherche.

    Merci
    Yann

  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
    Vous n'avez pas indiqué votre version.
    Depuis la 10g, vous avez connect_by_root qui fait ce que vous souhaitez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT connect_by_root ID as IdRacine...

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut
    En fait, je ne sais pas quelle version j'utilise, je construit juste un univers BO dessus.

    J'ai testé le connect_by_root, et ça marche très bien.

    Merci

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

Discussions similaires

  1. obtenir le résultat d'une requête SQL dans un range
    Par mah.ngaz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2013, 11h59
  2. Comment obtenir le nombre de ligne dans une requête ?
    Par totoAussi dans le forum Requêtes
    Réponses: 8
    Dernier message: 06/09/2011, 17h28
  3. Obtenir une liste déroulante dans une requête
    Par Sadgob dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 31/07/2007, 17h41
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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