Mssql Sınırsız Kategori Yapımı

sınırsız kategori sql

Sql ile sınırsız kategori nasıl yapılır?

Geliştirdiğim bir erp projesi için sınırsız kategori özelliği lazım olmuştu, bu işi çözmenin en mantıklı yolunun sql olacağına karar verdim ve yazdım.

Kategori listesinin olduğu bir tablomuz olduğunu düşünelim. Sütun olarak kategoriid, kategoriismi ve bir de ustkategori isimli 3 adet sütunumuz olsun.
kategoriid: primary key olarak her kategorinin kendine özgü değer alacağı sütundur, int tipinde olacaktır.
kategoriismi: kategorinin ismini belirten sütundur, nvarchar tipinde olacaktır.
ustkategori: kategorinin herhangi bir kategorinin altı olduğu durumunda hangi kategorinin alt kategorisi olduğunu bu sütundan anlayacağız, eğer kategori alt kategori değilse bu sütun 0 değerini alacaktır, eğer bir alt kategoriyse alt kategorisi olduğu kategorinin id numarasını alacaktır.

tedarik2

Yukarıdaki örneğin uygulamasını içeren kod aşağıdadır.


with KTG as
(

select kategoriid, CAST(kategoriismi as varchar(255)) as kategoriismi, ustkategori
from tedarik_kategoriler
where ustkategori = 0

union all

select c.kategoriid, CAST(p.kategoriismi + ' -> ' + c.kategoriismi as varchar(255)), c.ustkategori
from tedarik_kategoriler as c
join KTG as p on p.kategoriid = c.ustkategori
)

select * from KTG
order by kategoriismi

Sorgunun çıktısı aşağıdaki gibi olacaktır:
kategorilerSınırsız kategori yapımını elimden geldiği kadarıyla anlatmaya çalıştım, yapamadığınız veya anlamadığınız yer olursa her zaman sorabilirsiniz

“Mssql Sınırsız Kategori Yapımı” üzerine 3 yorum

  1. s.a hocam , bu sql tarafında güzel olmuş , şöyle bir şeyi nasıl yaparız , Elektrik–>Bobin–>Ayarlı Bobin , web de bu string i her kategorinin üstüne tklanınca ait olduğu kategoriye gidecek şekilde nasıl yaparız ?

  2. 3.Seviye deki bir kategorinin başına Ana kategorisini eklemiyor hocam , sanırım SQL ile sıkıntılı bir işlem bu.

    1. Merhaba, her kategoriye ayrı tıklanabilsin isteniyorsa kategori listeyen metodun kendisini kendisinden çağırarak sonsuz alt kategori mantığı oluşturulabilir, bu mantığı bir uygulamada kullanmıştım, bulabilirsem paylaşırım, ayrıca mailden de ulaşabilirsiniz: iletisim@mehmetcanyegen.com.tr
      Bu örnekteki listeleme şekliyle kategori ağacının her üyesine yalnızca tek link verilebilir.
      İkinci yorum için, bu yöntem sonsuz alt kategori şeklinde sorunsuz çalışıyor, ana kategorilerin üst kategori id sini 0 vermeyi unutmayın, zaman bulabilirsem daha rahat görülebilmesi için çalışan örnek uygulama paylaşırım

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.