Merhaba arkadaşlar,Birçok kişi kategorilerle ilgili döküman hazırlamış. Bende incelediğim e-ticaret sistemlerinden VirtueMart ta kullanılan kategorileme sistemini sizlerle paylaşmak istedim.İlk önce veritabanı tarafımızı daha sonra sql tarafını yazacağım. Veritabanı için :Kategoriler tablomuz :id – AI( Auto Increment ) // Otomatik artan sayıcat_name – varchar(255) // Kategori ismimizvs. vs.( gerisi çokta önemli değil, gerekli olan bilgileri girersiniz. )
Kategori Bağlantıları tablomuz :id – AI( Auto Increment )parent_id – int // üst kategoriyi tutuyor( 0’sa ana kategori demektir )child_id – int // hangi kategori için olduğunu veriyor.
Tablolarımız bunlar. Örnek eklemeler yapalım :Kategoriler :
* id = 1* cat_name = “deneme1″* id = 2* cat_name = “deneme2″* id = 3* cat_name = “deneme3”Kategoriler_xref :
* id = 1* parent_id = 0* child_id = 1* id = 2* parent_id = 0* child_id = 2* id = 3* parent_id = 2* child_id = 3Örnek sql kodumuz :
Örnek 1 : Kategori 2nin alt kategorileri İçin
select * from kategoriler as kat right join kategoriler_xref as xref on kat.id = xref.parent_id where parent_id = 2
Bunu sorgu olarak döndürdüğümüzde* id = 3* parent_id = 2* child_id = 3elemanımızı seçtiğini göreceğiz.( 2 kategorinin alt kategorisi )Örnek 2 : Sadece Ana Kategoriler
select * from kategoriler as kat right join kategoriler_xref as xref on kat.id = xref.parent_id where parent_id = 0
Gördüğünüz gibi gayet basit ve istenirse 1 kategori 1’den fazla kategorinin alt kategorisi olabiliyor. Örnek Hiyerarşi( TDK’ya selamlar ) :* deneme1* —deneme2* deneme3* —deneme2* deneme4* —deneme5* ——deneme2gibi…Umarım işinize yarar.Sevgiler…Oğuz Özcan