|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Bonjour à tous,
Suite à la lecture, d'un post, j'ai voulu m'essayer à la rêquete récursive pour récupérer des infos. J'ai bien lu le tuto mais je n'arrive pas à appliquer. J'ai une table Code :
T_DIM_GRANDES_COMPTES (GrandesComptes_Id, EntiteClienteMere_Id, EntiteClienteFille_Id) Code :
Par contre si j'execute avec un EntiteClienteMere_Id ayant des petites-filles je me retrouve avec l'erreur suivante : "The statement terminated. The maximum recursion 100 has been exhausted before statement completion." Or j'ai vérifié avec des requêtes toute simple que la récursion est bonne. Code :
Merci à vous pour vos éclaircissements. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
je n'ai pas beaucoup de temps pour regarder mais pour depasser 100 recursion, il faut mettre une option.
Code :
|
||
|
00
|
|
|
#3 |
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Le truc est que j'ai maximum 3 niveau dans mes Entites.
C'est pour cela que je cherche le problème dans ma requête récursive. Merci. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() |
Code :
|
||
|
00
|
|
|
#5 | ||
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Bonjour, Merci pour l'idée mais cela ne fonctionne pas.
J'ai oublier une explication. Cette table Grandes_Comptes n'est qu'un table de référence entre EntiteFille_Id et Mere_Id. ces Id se retrouvent dans une autre table EntiteCliente dont j'aurais ensuite besoin de récupérer des infos. Le GrandesComptes_Id ne sert strictement à rien, je l'affichais juste pour avoir quelque chose à mettre. De plus, tu ne spécifiais plus nul part l'IdMere de laquelle partir. J'ai donc essayer le modifier ton script de la manière suivante : Code :
Le premier SELECT retourne bien les filles de l'EntiteClienteMere_Id donné dans le where, mais ensuite je n'ai pas de récursivité. Merci pour ton aide. |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Le script que je t'ai fourni fonctionne pour une table
T_DIM_GRANDES_COMPTES (GrandesComptes_Id, EntiteClienteMere_Id, EntiteClienteFille_Id) avec les données suivantes (1,2,null) (2,3,1) (3,null,2) (4,null,null) (5,6,null) (6,null,5) |
|
00
|
|
|
#7 |
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Ok, je suis bien d'accord mais le problème est que ma table ne foncitonne aps comme cela. Si on prend une table
T_DIM_GRANDESCOMPTES (GrandesComptes_Id, EntiteClienteMere_Id, EntiteClienteFille_Id). Le champ GrandesComptes_Id ne m'interesse pas. Depuis la table T_DIM_ENTITECLIENTE(EntiteCliente_Id, Libelle), je choisis un EntiteCliente_Id. A partir de celui-ci, dans la table T_DIM_GRANDESCOMPTES je restreint le EntiteClienteMere_Id avec EntiteCliente_Id sélectionné. Ensuite je récupère tout les EntiteClienteFille_Id. Et pour chaque EntiteClienteFille_Id, je l'utilise en tant que EntiteClienteMere_Id dans la même table GRANDESCOMPTES et je cherche tout les EntiteClienteFille_Id etc... J'ai donc une table T_DIM_GRANDESCOMPTES avec les valeurs suivantes : (1,100,100) (2,100,101) (3,100,102) (4,101,105) (5,101,106) (6,105,110) (6,105,111) Je veux alors obtenir la hiérarchie (EntiteClienteMere_Id, EntiteClienteFille_Id, NiveauFille) 100, 100, 0 100, 101, 1 100, 102, 1 100, 105, 2 100, 106, 2 100, 110, 3 100, 111, 3 Merci |
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() ![]() |
j'ai observe le tutorial de sql pro et il faut une racine à null comme ci dessous. tu peux creer une super racine à l'ensemble de tes branches...
si tu remplace null par 100 et que tu met = 100 dans la requete, ca t'indique " L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction. " Citation:
Code :
|
|||
|
00
|
|
|
#9 | ||
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Bonjour,
je viens de re-vérifier les infos du tuto, et d'après ce que je viens de comprendre, il faut partir du bas de la hiérarchie ?? Si c'est bien le cas, c'est pour cela que l'on ne se comprend pas. Ce que je souhaite est partir du haut de ma hiérarchie et trouver tout le fils, petit-fils etc.. à partir de la mère. Un peu comme dans cette suite de requêtes très manuelles, Code :
|
||
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
J'ai vu votre sujet. Il est malheureusement impossible pour moi d'intervenir longuement : je suis en déplacement pour une formation et ais des RV tard le soir cette semaine. Néanmoins, si vous n'êtes pas pressé, postez les DDL de vos tables, ainsi qu'un jeu d'essais et je traite votre cas de remonté dans les ancêtres ce week end, après mon cours au CNAM de samedi matin...
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#11 | ||||
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Bonjour,
Merci beaucoup pour votre aide et merci d'y passer du temps quand vous le pouvez. Voici les tables Code :
Code :
EntiteMere, EntiteFille, Niveau 100, 100, 0 100, 101, 1 100, 102, 1 100, 103, 2 100, 104, 2 100, 105, 2 100, 106, 2 je souhaites donc obtenir l'ensemble des EntiteClienteFille_Id qui sont en dessous de EntiteClienteMere_Id que j'aurais donné en paramètre. L'entiteCliente_Id = 110 ne doit donc pas apparaitre. Merci pour votre aide. |
||||
|
|
00
|
|
|
#12 | ||
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 782 ![]() |
Bonjour à tous, il semble que j'ai trouvé la solution à ma requête avec le code suivant
Code :
Merci à tous pour votre aide. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com