Mit einem SELECT wirst du hier wohl nicht weit kommen, f�rchte ich. Das Ganze liesse sich, wie schon geschrieben, am einfachsten mit dem rekursiver aufruf einer Funktion l�sen, aber zumindest soweit ich weiss, geht sowas nicht in SQL. Ich kann mir auch nicht vorstellen, wie das gehen sollte.
Du kannst das Ganze nat�rlich �ber ein separates Programm machen, wo dann Rekursion m�glich ist, aber das war wohl nicht sinn der Sache, oder? Christoph > -----Original Message----- > From: Mayer, Stefan [mailto:[EMAIL PROTECTED]] > Sent: Thursday, October 18, 2001 3:42 PM > To: ASP Datenbankprogrammierung > Subject: [aspdedatabase] AW: RE: Feststellen, ob a ein Kind von b > ist.... > > > nun, tas�chlich sind es rund 15.000 Beziehungen - ist das da nicht ein > bisserl m�hsam? die Beziehungen stehen ja in einer Tabelle > drinnen - ich > hoffe, ich habe mich da nicht ungeschickt ausgedr�ckt - ich > habe nur die > 3. schlaflose Nacht hinter mir (Butzi wird gerade Elternbetti > entw�hnt.......). > > Stefan. > > -----Urspr�ngliche Nachricht----- > Von: Christoph Biegner [mailto:[EMAIL PROTECTED]] > Gesendet: Donnerstag, 18. Oktober 2001 15:39 > An: ASP Datenbankprogrammierung > Betreff: [aspdedatabase] RE: Feststellen, ob a ein Kind von b ist.... > > > Hallo! > > Ich habe hier einen L�sungsansatz mit einer tempor�ren Tabelle. > Idealerweise > w�rde man sowas mit rekursion l�sen, aber das ist wohl in SQL nicht > m�glich. > Also: > > DROP TABLE dbo.relations > GO > DROP procedure dbo.GetRelations > GO > create table dbo.relations > ( > vater int NOT NULL, > kind int NOT NULL > ) > GO > > INSERT INTO relations VALUEs(3,7) > INSERT INTO relations VALUEs(3,8) > INSERT INTO relations VALUEs(4,9) > INSERT INTO relations VALUEs(7,12) > INSERT INTO relations VALUEs(12,13) > GO > > CREATE procedure dbo.GetRelations > @P_child int > AS > > SET NOCOUNT ON > > DECLARE @L_count int > DECLARE @L_count2 int > > CREATE TABLE #temp > ( > relationID INT NOT NULL > ) > > INSERT INTO #temp VALUES(@P_child) > > SELECT @L_count = 0 > SELECT @L_count2 = count(*) FROM #temp > > WHILE @L_count < @L_count2 > BEGIN > SELECT @L_count = @L_count2 > > INSERT INTO #temp > SELECT vater > FROM relations A > INNER JOIN #temp B ON A.kind = B.relationID > LEFT OUTER JOIN #temp C ON A.vater = C.relationID > WHERE C.relationID IS NULL > SELECT @L_count2 = count(*) FROM #temp > END > > SELECT * FROM #temp > GO > > GetRelations 13 > > > > HTH, > Christoph > > > -----Original Message----- > > From: Mayer, Stefan [mailto:[EMAIL PROTECTED]] > > Sent: Thursday, October 18, 2001 3:23 PM > > To: ASP Datenbankprogrammierung > > Subject: [aspdedatabase] Feststellen, ob a ein Kind von b ist.... > > > > > > ich habe in einer Tabelle Vater-Kind-Beziehungen > abgebildet. Wie kann > > ich ganz leicht (mit m�glichste einer einzigen Abfrage) > > feststellen, ob > > ein beliebiger Wert ein Vorfahre von a ist. > > > > > > Wert - Kind > > 3 | 7 > > 3 | 8 > > 4 | 9 > > ... > > 7 | 12 > > 12 | 13 > > > > > > Wenn ich nun den Wert "13" habe, m�chte ich als Ergebnis der Abfrage > > folgendes bekommen: > > > > 13 > > 12 > > 7 > > 3 > > > > Stefan..... > > > > | [aspdedatabase] als [EMAIL PROTECTED] subscribed > > | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv > > | Sie k�nnen sich unter folgender URL an- und abmelden: > > | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp > | [aspdedatabase] als [EMAIL PROTECTED] subscribed | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp | [aspdedatabase] als [EMAIL PROTECTED] subscribed | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp | [aspdedatabase] als [email protected] subscribed | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp
