Hallo Zusammen,
ist es im SQL möglich, eine Art Recursionsfrage in einer Cyrcle Relation zu erstellen ?
Folgendes Scenario am Beispiel Active Directory (vereinfacht):
Ich benutze 3 Tables (siehe Darstellung):
Table 1:
Beinhaltet den LDAPPath des Objekts und einen unique BigInt, welcher der Primary Key ist.
Table 2:
Beschreibt das Object mit allen Eigenschaften. Steht mit einer 1:1 Relation in Bezug zu Table 1
Table 3:
Enthält ausschließlich Foreign Keys und stellt die Members eines AD Objekts dar.
Bei einer Abfrage eines Objektes möchte ich nicht nur die Parents wie bei folgender Abfrage
sondern auch die GrandParents usw. solange bis eine bestimmte Tiefe erreicht ist oder es keine Parents mehr gibt. Das Gesamtergebnis soll untereinander stehen. Ist das irgendwie in einer performanten Art und Weise machbar.
Meine unkonventionelle Methode ist die Aktivierung der CLR auf dem Server und eine Prozedur in .Net schreiben. Das funktioniert, macht mich aber nicht glücklich.
Gruss Magic
ist es im SQL möglich, eine Art Recursionsfrage in einer Cyrcle Relation zu erstellen ?
Folgendes Scenario am Beispiel Active Directory (vereinfacht):
Ich benutze 3 Tables (siehe Darstellung):
Table 1:
Beinhaltet den LDAPPath des Objekts und einen unique BigInt, welcher der Primary Key ist.
Table 2:
Beschreibt das Object mit allen Eigenschaften. Steht mit einer 1:1 Relation in Bezug zu Table 1
Table 3:
Enthält ausschließlich Foreign Keys und stellt die Members eines AD Objekts dar.
Bei einer Abfrage eines Objektes möchte ich nicht nur die Parents wie bei folgender Abfrage
Code:
SELECT tbl_Object.Name, tbl_Object.Guid, tbl_Object_1.Name, tbl_Object_1.Guid
FROM ((tbl_Object INNER JOIN tbl_Path ON tbl_Object.ID = tbl_Path.OID) INNER JOIN tbl_Member ON tbl_Path.ID = tbl_Member.PID) INNER JOIN tbl_Object AS tbl_Object_1 ON tbl_Member.OID = tbl_Object_1.ID
sondern auch die GrandParents usw. solange bis eine bestimmte Tiefe erreicht ist oder es keine Parents mehr gibt. Das Gesamtergebnis soll untereinander stehen. Ist das irgendwie in einer performanten Art und Weise machbar.
Meine unkonventionelle Methode ist die Aktivierung der CLR auf dem Server und eine Prozedur in .Net schreiben. Das funktioniert, macht mich aber nicht glücklich.
Gruss Magic