Supposons que j'ai une table récursive (par exemple, des employés avec les gestionnaires) et une liste de taille 0..n
de ids. Comment puis-je trouver le parent commun le plus bas pour ces identifiants?le plus bas parent commun dans le tableau SQL récursif
Par exemple, si ma table ressemble à ceci:
Id | ParentId
---|---------
1 | NULL
2 | 1
3 | 1
4 | 2
5 | 2
6 | 3
7 | 3
8 | 7
Ensuite, les ensembles de ids suivants conduisent aux résultats suivants (le premier est un cas d'angle):
[] => 1 (or NULL, doesn't really matter)
[1] => 1
[2] => 2
[1,8] => 1
[4,5] => 2
[4,6] => 1
[6,7,8] => 3
Comment pour faire ça?
EDIT: Notez que parent n'est pas le terme correct dans tous les cas. C'est le nœud commun le plus bas dans tous les chemins de l'arbre. Le plus bas noeud commun peut aussi être un nœud lui-même (par exemple dans le cas [1,8] => 1
, noeud 1
est pas un parent du noeud 1
mais noeud 1
lui-même).
Meilleures salutations, Ronald
C'est vraiment le parent le plus bas commun ou individu si l'article simple. – RichardOD
C'est vrai, c'est aussi auto si le self est le nœud commun le plus bas. J'ai légèrement modifié ma question pour en tenir compte. –