Comment obtenir tous les enfants d'un nœud dans l'arborescence ? Requête SQL?

table utilisateur

colonnes -
(l'identifiant ,le nom, managerId)

lignes -

(1,nilesh,0)
(2,nikhil,1)    
(3,nitin ,2)  
(4,Ruchi,2)

si je donne l'id de l'utilisateur qu'il doit la liste de tous les rapports de peuple à lui .
si je donne userId = 2, il doit retourner 3,4.

Est cette requête correcte

SELECT ad3.userId
FROM user au , user  au2 , user  au3
WHERE 
    ad.managerId = ad2.managerId AND 
    ad3.managerId = ad2.userId AND
    ad.userId=2

Est-il efficace façon de gérer la structure de l'arbre dans la DB ?
Comment parler à droite et à gauche de la feuille ?

Quel type de base de données utilisez-vous?
Si vous êtes à la recherche d'autres façons de mettre en œuvre des hiérarchies dans une base de données relationnelle, vous pouvez avoir un coup d'oeil à cette présentation. slideshare.net/billkarwin/models-for-hierarchical-data
Très important de savoir que le moteur de base de données. Ce que vous voulez, c'est la "AVEC la" clause de mais ses pas universellement pris en charge.
"AVEC la" clause est appelée "expression de table commune récursive" et est pris en charge par PostgreSQL, Firebird, Oracle, DB2, SQL Server, Sybase et H2

OriginalL'auteur Neel Salpe | 2011-06-08