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

Oracle Discussion :

[Oracle 9i] Construction d'une requête hiérarchique


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut [Oracle 9i] Construction d'une requête hiérarchique
    Bonjour,

    Nous avons mis les éléments suivants dans la table ARBRE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO ARBRE (pere, fils) VALUES ('A','A');
    INSERT INTO ARBRE (pere, fils) VALUES ('A','B');
    INSERT INTO ARBRE (pere, fils) VALUES ('B','D');
    INSERT INTO ARBRE (pere, fils) VALUES ('D','H');
    INSERT INTO ARBRE (pere, fils) VALUES ('D','I');
    INSERT INTO ARBRE (pere, fils) VALUES ('B','E');
    INSERT INTO ARBRE (pere, fils) VALUES ('A','C');
    INSERT INTO ARBRE (pere, fils) VALUES ('C','F');
    INSERT INTO ARBRE (pere, fils) VALUES ('C','G');

    Nous souhaitons à partir d’une requête hiérarchique obtenir pour chaque nœuds la distance de tous ses ascendants directs.

    Description de l’arbre :
    A
    ..+__ B
    ........+__ D
    ..............+__ H
    ..............+__ I
    ........+__ E
    ..+__ C
    ........+__ F
    ........+__ G


    Résultat à obtenir :

    Parent | fils | distance
    null | A | 0
    A | B | 1
    B | D | 1
    D | H | 1
    D | I | 1
    B | E | 1
    A | C | 1
    C | F | 1
    C | G | 1
    A | D | 2
    B | H | 2
    B | I | 2
    A | E | 2
    A | F | 2
    A | G | 2
    A | H | 3
    A | I | 3

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    en 10g ça aurait été hyper simple avec connect_by_root. Bon. 9i.

    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
     
    select decode(pere,fils,null,substr(p,2,1)) parent, fils, distance
    from (
      select rownum, level-1 distance,pere,fils,sys_connect_by_path(fils,'+') p 
      from arbre connect by nullif(pere,fils)=prior fils
    )
    where pere=fils or distance>0
    order by distance,parent,fils
    /
     
    PARENT FILS DISTANCE
    ------ ---- --------
           A           0
    A      B           1
    A      C           1
    B      D           1
    B      E           1
    C      F           1
    C      G           1
    D      H           1
    D      I           1
    A      D           2
    A      E           2
    A      F           2
    A      G           2
    B      H           2
    B      I           2
    A      H           3
    A      I           3

Discussions similaires

  1. Construction d'une requête "imbriquée" avec Oracle
    Par kyra78 dans le forum Langage SQL
    Réponses: 0
    Dernier message: 05/02/2008, 15h29
  2. [Oracle 9i] Aide sur une requête de sélection
    Par Requin15 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2007, 10h58
  3. [Conception] Construction d'une requête
    Par enidnalb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/12/2006, 09h59
  4. Construction d'une requête imbriquée
    Par gudul dans le forum SQL
    Réponses: 20
    Dernier message: 03/07/2006, 11h57
  5. [Oracle 9i] Optimisation d'une requête
    Par Requin15 dans le forum Oracle
    Réponses: 14
    Dernier message: 20/06/2006, 12h37

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