Retour au site
Connexion : S'inscrire

4 messages
Filtrer ok

{SQL} Sélectionner tous les sous-enfants

Un expert informatique vous aide immédiatement par téléphone.
Bonsoir,

J'ai un petit soucis d'ordre algorithmique.

Une application gère (dans une base de données) des sociétés (ID, raison sociale, ID de la société parente, etc.).

J'aimerais sélectionner une société et toutes les sociétés enfants de celle-ci.

Exemple :
Jeu de données :
- ID : RS : IDparent
- 43 : M6 : NULL
- 27 : Clubic : 43
- 12 : Achetez-Facile : 43
- 18 : Achetez-Lingerie : 12
- 56 : TF1 : NULL
- 75 : TFou : 56
- 79 : TFou Senior : 75
J'aimerais donc avoir le SELECT pour disons, sélectionner la société M6 (n°43) et les sociétés enfants de celle-ci.
Je devrais donc obtenir les sociétés 43, 27, 12 et 18
Si je demande la société Clubic (n°27) : je devrais avoir les sociétés 27, 12 et 18

Je n'arrive pas à faire cette requête sans qu'elle ne soit moche.
Suis-je obligé d'avoir une boucle (par récursivité ou par loop) ?

Merci

   SQL
 
 
 
C'est vrai que j'avais pensé aux nested-tree mais j'aurais aimé voir si y'avait un autre moyen
 
 
Avec SQL server il y a moyen de faire en une seule query (ici sur la db sample adventureworks):

Code :
WITH DirectReports(ManagerID, EmployeeID, EmployeeLevel) AS 
(
 SELECT ManagerID, EmployeeID, 0 AS EmployeeLevel
 FROM HumanResources.Employee
 WHERE ManagerID IS NULL
 UNION ALL
 SELECT e.ManagerID, e.EmployeeID, EmployeeLevel + 1
 FROM HumanResources.Employee e
 INNER JOIN DirectReports d
 ON e.ManagerID = d.EmployeeID 
)
SELECT ManagerID, EmployeeID, EmployeeLevel 
FROM DirectReports


Ca ne marche qu'avec SQL 2005 et +
 
 

|
 
4 messages
Un expert informatique vous aide immédiatement par téléphone.
Filtrer ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires: