Results 1 to 4 of 4

Thread: Recursieve query/user defined function

  1. #1

    Recursieve query/user defined function

    Hallo hallo,

    In een MSSSQL 2008 database heb ik de volgende tabel “t_connector” die de relatie tussen objecten in de “t_object” tabel bijhoudt:
    Name:  Naamloos.png
Views: 139
Size:  2.3 KB

    Nu wil ik een query of user defined function schrijven die alle direct en indirecte relaties teruggeeft. Als ik bijvoorbeeld als input 2742 geef, wil ik 2744,2746 en 2749 als resultaat krijgen.

    Iemand een suggestie hoe ik dit aanpak?

    Bij voorbaat dank!

  2. #2
    Laat maar, heb het eindelijk gevonden Waar ik naar op zoek moest was het WITH statement.

    Het begin van mijn SQL ziet er nu zo uit, maar moet nog verder uitgewerkt worden.
    Code:
    WITH ROOT AS (SELECT Start_Object_ID AS S FROM t_connector WHERE End_Object_ID = 2742 
    UNION ALL
    SELECT Start_Object_ID FROM ROOT, t_connector WHERE ROOT.S = t_connector.End_Object_ID
    )
    SELECT * FROM ROOT

  3. #3
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Iets als dit?

    SQL Code:
    1. DECLARE @InputId int = 2742;
    2. DECLARE @OutputTable TABLE(ID int);
    3.  
    4. WHILE NOT @InputId IS NULL
    5. BEGIN
    6.   INSERT INTO @OutputTable (ID) VALUES (@InputId);
    7.   SELECT @InputId = (SELECT Start_Object_ID FROM t_connector WHERE End_Object_ID = @InputId);
    8. END
    9.  
    10. SELECT ID FROM @OutputTable

    Deze geeft ook de input (2742) terug in de lijst, wil je dat niet, dan moet je die natuurlijk uit het resultaat weglaten.
    TMemoryLeak.Create(Nil);

  4. #4
    Dat ziet er elegant uit. Persoonlijk vind ik een while loop wat makkelijker leesbaar dan het WITH statement.
    Dank je wel!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •