2010-06-03 4 views
0

J'ai une table Employee, c'est une table auto-référençant, avec se réfère à la clé primaire empID. Je veux trouver 2 enregistrements de niveau par un empId donné.Récursivité seulement 2 enregistrements de niveau en utilisant sql commun

Par exemple: si on leur donne empId=5, si empId=5 a des dossiers pour les enfants, les afficher, ainsi que les enfants dans les dossiers des enfants. La base de données est SQL Server 2005.

mise à jour: Je veux une projection complète sur

+0

À quoi voulez-vous que la sortie ressemble? –

+1

Juste ajouter deux jointures? –

+0

Alors qu'avez-vous fait jusqu'à présent? – HLGEM

Répondre

0

Cela devrait vous aider à démarrer. Je ne sais pas ce que vous entendez par "projection complète". Si vous voulez dire chaque enfant de chaque enfant, alors vous aurez besoin d'une boucle. Mais si vous savez que vous voulez juste descendre 2 niveaux, cet exemple va fonctionner:

SELECT 
    t1.empID as Parent_ID, 
    t2.empID as Child_ID, 
    t3.empID as Grandchild_ID 
FROM 
    employee t1 
    LEFT JOIN employee t2 ON t1.empID = t2.managerID 
    LEFT JOIN employee t3 ON t2.empID = t3.managerID 
WHERE t1.empID = @given_empID 
Questions connexes