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 :

Hierarchie et Oracle 8


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Points : 71
    Points
    71
    Par défaut Hierarchie et Oracle 8
    Bonjour

    base oracle 8.1.7

    voici 2 tables

    objects et structures

    objects
    code
    class
    structures
    parent
    child


    les niveaux de l'arborescence sont divers ,les classes objets multiples et variees


    je voudrais pouvoir faire une requete SQL afin de lister
    pour chaque objet de classe PEF tous les descendants (quels que soient leur niveau dans l'arborescence) appartenant uniquementà la classe objet BTD


    ex:


    PEF1,BTD3,level2
    PEF1,BTD26,level4
    PEF1,BTD54,level5
    PEF2,BTD3,level1
    PEF2,BTD44,level4
    PEF3,BTD12,level1
    PEF3,BTD11,level2

    etc....

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Fais une recherche sur connect by, tu trouveras des exemples

  3. #3
    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
    le problème dans 8i est qu'il n'existe pas de connect by root

    dans 10g, je ferais :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    SCOTT@LSC01> with structures as (
      2      select 'PEF1' parent, 'XYZ' child from dual
      3      union select 'XYZ','BTD3' from dual
      4      union select 'XYZ','abc' from dual
      5      union select 'abc','mno' from dual
      6      union select 'mno','BTD26' from dual
      7      union select 'BTD26','BTD54' from dual
      8      union select 'PEF2','BTD3' from dual
      9      union select 'PEF2','jkl' from dual
     10      union select 'jkl','xxx' from dual
     11      union select 'xxx','yyy' from dual
     12      union select 'yyy','BTD44' from dual
     13      union select 'PEF3','BTD12' from dual
     14      union select 'BTD12','BTD11' from dual),
     15  objects as (
     16      select 'PEF1' code,'PEF' class from dual
     17      union select 'PEF2','PEF' from dual
     18      union select 'PEF3','PEF' from dual
     19      union select 'BTD3','BTD' from dual
     20      union select 'BTD26','BTD' from dual
     21      union select 'BTD54','BTD' from dual
     22      union select 'BTD44','BTD' from dual
     23      union select 'BTD12','BTD' from dual
     24      union select 'BTD11','BTD' from dual
     25      union select 'abc','007' from dual
     26      union select 'XYZ','007' from dual
     27      union select 'xxx','007' from dual
     28      union select 'yyy','007' from dual
     29      union select 'jkl','007' from dual
     30      union select 'mno','007' from dual)
     31  select root,child, l "LEVEL" from (
     32      select connect_by_root parent root, child, level l
     33      from structures, objects
     34      where parent=code
     35      connect by parent = prior child
     36      start with class='PEF'
     37  ), objects
     38  where code=child and class='BTD'
     39  order by 1,3,2
     40  /
    ROOT  CHILD      LEVEL
    ----- ----- ----------
    PEF1  BTD3           2
    PEF1  BTD26          4
    PEF1  BTD54          5
    PEF2  BTD3           1
    PEF2  BTD44          4
    PEF3  BTD12          1
    PEF3  BTD11          2
    dans 8i, tu peux réécrire connect_by_root, mais c'est pas gagné d'avance...
    un merveilleux exemple de connect_by.root en employant l'argument .FIRST d'une table pl/sql peut-être lu sur http://www.orafaq.com/forum/?t=msg&th=11646/0/

    @+
    Laurent

Discussions similaires

  1. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 19h24
  2. hierarchie et oracle 8
    Par gg2vig dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2006, 15h15
  3. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 17h52
  4. [Kylix] sqlconnection + oracle
    Par tibo55555 dans le forum EDI
    Réponses: 1
    Dernier message: 02/09/2002, 10h09
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 15h18

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