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

Antwort per Email an