TabloAdi
----BaslikID
----BaslikAdi
----AnaBaslikID
gibi bir tablon olsun, BaslikID ve AnaBaslikID int olacak, BaslikAdi varchar 50 karakter veya artık kaç karakterse o kadar olacak. AnaBaslikID varsayılan değer 1 olsun.
her veri eklendiğinde eğer ana başlık ise AnaBaslikID değeri 0 olarak eklenecek, eğer alt başlık ise AnaBaslikID 1,3,5 artık her neyse ona göre eklenecek.
Veriyi çekerken
SELECT Tbl1.BaslikID BID1, Tbl1.BaslikAdi BA1, Tbl1.AnaBaslikID, Tbl2.BaslikID BID2, Tbl2.BaslikAdi BA2 FROM `tablo1` Tbl1 JOIN tablo1 Tbl2 ON Tbl1.AnaBaslikID = Tbl2.BaslikID
Yukarıdaki sorgu ne yapar şöyle anlatayım. Aynı 2 tabloyu birleştirdik birine Tbl1 diğerine Tbl2 dedik. Daha sonra veriler çakışmasın diye kolonları ayrıştırdık ve yeni isimler verdik. Ufak bir test yaptım sadece alt başlıkları listeliyor ve ana başlıkları da çekiyor. Eğer olurda ana başlıkları listelerse WHERE AnaBaslikID > 0 olarak eklemen gerekli diye düşünüyorum. Yukarıdaki kod sorunsuz bir şekilde verileri çekmesi lazım.
Pardon ya :D ben olmaması gereken tarafı istediğini sandım. Bunun için iki sorgu yapman gerekecek. İç İçe Kategori mantığını iç içe başlık şeklinde yapacaksın. Yarın öğlene kadar çözemezsen öğleden sonra bakarım soruna.