Angenommen, ich habe eine rekursive Tabelle (z. B. Mitarbeiter mit Managern) und eine Liste der Größe 0..n
von ids. Wie kann ich die niedrigsten gemeinsamen Eltern für diese IDs finden?Finde das niedrigste gemeinsame Elternteil in der rekursiven SQL-Tabelle
Zum Beispiel, wenn meine Tabelle wie folgt aussieht:
Id | ParentId
---|---------
1 | NULL
2 | 1
3 | 1
4 | 2
5 | 2
6 | 3
7 | 3
8 | 7
Dann gelten die folgenden Sätze von IDs zu folgenden Ergebnissen führen (die erste ist eine Ecke Fall):
[] => 1 (or NULL, doesn't really matter)
[1] => 1
[2] => 2
[1,8] => 1
[4,5] => 2
[4,6] => 1
[6,7,8] => 3
Wie um dies zu tun?
EDIT: Beachten Sie, dass Eltern nicht der richtige Begriff in allen Fällen ist. Es ist der niedrigste gemeinsame Knoten in allen Pfaden auf dem Baum. Der niedrigste gemeinsame Knoten kann auch ein Knoten selbst sein (zum Beispiel im Fall [1,8] => 1
ist der Knoten 1
kein Elternteil des Knotens 1
sondern Knoten 1
selbst).
Mit freundlichen Grüßen, Ronald
Dies ist wirklich am niedrigsten gemeinsamen Elternteil oder Selbst wenn einzelne Artikel. – RichardOD
Das ist richtig, es ist auch selbst wenn self zufällig der niedrigste gemeinsame Knoten ist. Ich habe meine Frage etwas modifiziert, um dies zu berücksichtigen. –