|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : mars 2007 Messages : 78 ![]() |
Bonsoir,
Est-ce avec une requête connect by et start with. On peut obtenir qu'une "branche" d'un arbre. c'est à dire je voudrais voir apparaître que la partie rouge des données ci-dessous Code :
qui me sortira le level 1 puis l'autre partie de la branche "blake" je ne vois pas comment.... Si il y a une solution sans union je suis preneur Merci |
||
|
|
10
|
|
|
#2 | ||||||
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Pour le cas précis, vous pouvez utiliser ceci :
Code :
Dans un cas plus général, par exemple tous les descendants de JONES, il faut trouver un critère respecté par tous les descendants. On peut jouer sur SYS_CONNECT_BY_PATH : Code :
Code :
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
||||||
|
|
01
|
|
|
#3 |
|
Membre régulier
![]() Inscription : mars 2007 Messages : 78 ![]() |
Merci Pomalaix,
ça me plaît bien comme solution, je vais essayer de ce pas. |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : mars 2007 Messages : 78 ![]() |
ça marche bien
![]() Merci encore |
|
|
00
|
|
|
#5 | ||||||||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Tu m'en diras tant
![]() Attendu que la hiérarchie est bâtie au fur et à mesure, au moment où l'on accède à un ancêtre de BLAKE, on ne peut pas encore savoir qu'il s'agisse d'un ancêtre de BLAKE. Il faut donc une sous-requête, je serais curieux de voir une soluce avec seulement une union... et qui bien sûre prévoit les arrières-arrières-arrières-grand-pères et arrières-arrières-arrières-petits-enfants Je suis sûr qu'il y a mieux, mais voici un exemple avec un CTE récursif et un IN (subquery). Code :
Code :
Code :
Code :
Code :
Code :
|
||||||||||||
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Pour les vieilles versions
Code :
|
||
|
00
|
|
|
#7 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Il faudrait déjà s'assurer qu'on répond à la même question !
De la description initiale, je traduis : affiche-moi KING, BLAKE et ses subordonnés. (Et je suppose que BLAKE est relié sans intermédiaire à KING, mais l'adaptation est mineure pour se placer dans un cas plus général). Vous vous traduisez visiblement par : affiche-moi toute la chaîne hiérarchique dans laquelle se situe BLAKE, autrement dit ses supérieurs depuis le grand chef, BLAKE lui-même et ses subordonnés.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
On peut obtenir qu'une "branche" d'un arbre.
Il s'agit bien d'une question hiérarchique. Bon, à la question : comment obtenir ce qu'il y a en rouge on aurait pu répondre Code :
SELECT * FROM TABLE(sys.odcivarchar2list('KING','BLAKE','ALLEN','WARD','MARTIN','TURNER','JAMES'))
|
|
00
|
|
|
#9 | |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Citation:
Il ne reste plus qu'à attendre que le demandeur repasse pour nous expliquer ce qu'il voulait réellement.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com