İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Tek MySql Sorgusu ile üst ve alt kategorideki ürünleri listeleme?

BordoMavi

0
İyinet Üyesi
Katılım
31 Ekim 2007
Mesajlar
176
Reaction score
0
Konum
Hirçın Sulardan
Arkadaşlar merhaba. Şu şekilde 2 tablo yapım var;

categories
---------------------------------------
id | parent_id | heading |
---------------------------------------
1 | 0 | Category 1
---------------------------------------
2 | 1 | Category 1.1
---------------------------------------
3 | 1 | Category 1.2
---------------------------------------
4 | 3 | Category 1.2.1
---------------------------------------

products
---------------------------------------
id | category_id | heading |
---------------------------------------
1 | 1 | Product 1
---------------------------------------
2 | 3 | Product 2
---------------------------------------
3 | 3 | Product 3
---------------------------------------
4 | 4 | Product 4
---------------------------------------

products tablosunda ki category_id sütünundaki değerler categories tablosun da ki id sütunundaki değerlerle eşleşiyor.
Bir kaç sorgu ve php müdahalesi ile istediğim sonucu elde ediyorum aslında fakat esas yapmak istediğim bu işlemi tek Sql sorgusunda halledebilmek.
Şurada kodu var bakabilirsin veya kodu şu diye cevap vermektense şu şekilde ve şunları kullanarak yapabilirsin şeklinde cevaplar beni daha mutlu eder.
Yani işin algoritmik olarak yapısını merak ediyorum. Bir kaç saattir düşünüyorum fakat henüz bir bağlantı kurmadım Sql konusunda fazla bilgiye sahip olmadığımdan aslında tam olarak nelere bakmam gerektiğini bilemiyorum.
categories tablosunun maksimum derinliği 1.2.1 yani 2 alt kategorisinin alt kategori de olacak şekilde daha fazla derinleşmeyecek.

İstediğim 1. ve 2. derinlikteki categories sütununu çağırdığım da parent_id ile bu sütuna bağlı olan tüm alt kategorilere ekli product tablosunda yer alan verileri listelemek. 3. derinlikte ki tıkladığında sadece ona aitler listelenecek bu kısımda herhangi bir problemim yok. 1.ve 2. derinliktekiler de tek Sql sorgusu ile bu iş nasıl yapılabilir?
Biraz uzun ve karmaşık oldu sanırım ama anlayan arkadaşlar yardımcı olursa memnun olurum.
Şimdiden teşekkürler.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
2 seviye için aşağıdaki mantığı kullanabilrisin, daha derin seviye için, bir o kadar daha JOIN kullanman, ya da php veya stored procedure yoluyla çözmen gerekiyor.

SELECT p.heading as urun, c1.heading as alt_kategori, c2.heading as ust_kategori
FROM products p
INNER JOIN categories c1 ON c1.id=p.category_id
LEFT OUTER JOIN categories c2 ON c2.id=c1.parent_id
 

BordoMavi

0
İyinet Üyesi
Katılım
31 Ekim 2007
Mesajlar
176
Reaction score
0
Konum
Hirçın Sulardan
[MENTION=5985]Angelo[/MENTION]
Aslında cevap bulamayınca php ile işimi halletmiştim ama mantığını anlayabilmek açısından verdiğin örnek için yinede teşekkür ederim.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst