Sonsuz Kategori Oluşturup SQL ile Gruplama

Genelde menüler için kullandığımız kategorileme mantığını SQL ile gruplama yapmaktan için başlıyoruz. Öncelikle örnek veritabanımızın yapısını inceleyelim. Veritabanımızda Kategoriler isminde bir tablomuz bulunmakta. Bu tablomuzda bir ID (Otomatik Sayı – Auto Increment), AnaKat (Int) ve Kategori (Char) olmak üzere üç alan bulunmakta. Örneğimiz aşağıdaki görüntüde olduğu gibidir.

Mantık olarak AnaKat alanının değeri “0” (sıfır) olan kayıtlar ana kategorilerimizi, sıfır dışındaki kayıtlar ise alt kategorilerimizi belirtmektedir. Yine AnaKat alanındaki değerler ise ilgili alt kategorinin ana kategorisini belirlemektedir.

Aşağıdaki görüntüde üzerinde çalışacağımız örnek Kategoriler tablosunu görüyorsunuz.

Kategoriler

Şimdi biz bu kategorileri, bağlı olduğu ana kategoriye göre yan yana listeleyeceğiz. Bunun için SQL cümlemizi aşağıdaki gibi düzenliyoruz.

[cc lang=”sql”]
SELECT kategoriler.*, AltKategoriler.Kategori AS AnaKategori FROM kategoriler
JOIN kategoriler AS AltKategoriler ON kategoriler.AnaKat = AltKategoriler.ID
HAVING kategoriler.AnaKat <>0
[/cc]

Sonuç olarak bize aşağıdaki görüntü çıkacaktır.

SQLLIST

Görüldüğü gibi tüm kategoriler Ana kategorileriyle birlikte karşımızda.  Sql cümlemizde As komutuyla AnaKategori adında sanal bir sütun oluşturarak ana kategorilerimizi bu alanda listeledik.

Join komutu ile ana kategorilerin yanına AnaKat alanındaki değerle ID alanındaki değerleri eşleştirdik.

Son olarak Having komutuyla AnaKat alanındaki “0” değerlerin gösterilmemesini sağladık.

Sql cümlemizde As komutuyla oluşturduğumuz sanal AnaKategori alanını projemizde de kullanabiliyoruz.

Örnek : <%#Eval("AnaKategori") %>

Kolay gelsin..

Bir düşünce üzerine “Sonsuz Kategori Oluşturup SQL ile Gruplama