MSSQL Ağaç grubun alt gruplarını bulma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
igny
Üye
Mesajlar: 54
Kayıt: 14 Mar 2008 04:03

MSSQL Ağaç grubun alt gruplarını bulma

Mesaj gönderen igny »

Merhaba arkadaşlar

id adi Parentid
1 a 0
2 a1 1
3 a2 1
4 aa1 2
şeklinde olna tabloda seçilen kodun altındakileri getiren bir kod lazım.nasıl yapabilirim acaba
Mesela a yı seçti a1,a2 ve aa1 gelecek
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: MSSQL Ağaç grubun alt gruplarını bulma

Mesaj gönderen sabanakman »

İyi günler. Bu işler için döngüsel yapı kurmak gerekmekte. Hatta bir fonksiyon yazarak genel kullanım sağlanabilir.

Kod: Tümünü seç

ALTER FUNCTION [dbo].[fn_GrupListe] (@ID int)
RETURNS @Listem TABLE (id int)
AS
BEGIN
  if Exists(select top 1 ID from Ornek where Id=@ID) begin
    INSERT INTO @Listem (id) values (@ID)
    while @@ROWCOUNT>0 begin
      insert into @Listem (id) select Id from Ornek where ParentID in (select id from @Listem) and Id not in (select id from @Listem)
    end
    -->delete from @Listem where id=@ID
  end
  RETURN
END
gibi bir tablo sonucu üreten fonksiyon aşağıdaki şekilde kullanılabilir.

Kod: Tümünü seç

select * from Ornek where Id in (select id from fn_GrupListe(1))
İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla