Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 17h24   #1
Futur Membre du Club
 
Homme seb
Consultant informatique
Inscription : février 2008
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme seb
Âge : 33
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2008
Messages : 34
Points : 16
Points : 16
Par défaut ORACLE: Requete hierarchique SQL

Bonjour,

J’ai une table de la forme

Code :
1
2
3
4
5
6
7
8
9
 
pere   |   fils 
A       |    B
A       |    C
A       |    D
A       |    D
C       |    E
F       |    G
F       |    H
J’aimerais pouvoir extraire

Code :
1
2
3
4
5
6
7
 
pere   |   fils 
A       |    E
A       |    B
A       |    D
F       |    G
F       |    H
C’est à dire n’extraire que les racines et feuilles de chaque arbre présents dans la table

J’ai essayé de faire une requête de la forme :

Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT
      SYS_CONNECT_BY_PATH(pere,'/') AS arbo, 
      CONNECT_BY_ISLEAF AS IsLeaf,
      pere,
      fils, 
      LEVEL AS niveau
  FROM 
      matable
  CONNECT BY NOCYCLE PRIOR fils = pere
Le résultat n’est pas satisfaisant car la table n’est pas totalement hiérarchique (plusieurs pères)

Je pense qu’il faut faire une procedure avec boucle et curseurs avec une liste, mais c’est là que je bloque un peu

D’avance merci pour votre aide
pingouinos_64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 18h08   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 438
Points : 10 438
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous n'avez pas précisé votre version.
En 11g :
Code :
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
WITH MaTable AS
(
SELECT 'A' AS pere, 'B' AS fils FROM dual union ALL
SELECT 'A'        , 'C'         FROM dual union ALL
SELECT 'A'        , 'D'         FROM dual union ALL
SELECT 'A'        , 'D'         FROM dual union ALL
SELECT 'C'        , 'E'         FROM dual union ALL
SELECT 'F'        , 'G'         FROM dual union ALL
SELECT 'F'        , 'H'         FROM dual
)
    SELECT DISTINCT
           connect_by_root pere AS pere,
           fils
      FROM matable
     WHERE connect_by_isleaf = 1
     start WITH pere NOT IN (SELECT fils FROM matable) 
connect BY nocycle pere = prior fils;
 
PERE FILS
---- ----
A    D
A    B
F    H
F    G
A    E
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 08h16   #3
Futur Membre du Club
 
Homme seb
Consultant informatique
Inscription : février 2008
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme seb
Âge : 33
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2008
Messages : 34
Points : 16
Points : 16
Par défaut Requete hierarchique SQL

Bonjour,

Désolé pour cette réponse tardive, mais cela a bien marché !!

Merci !!!

@++
pingouinos_64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h30.


 
 
 
 
Partenaires

Hébergement Web