2010-03-04 5 views
8

Yerleri birbirine bağlayan bir veritabanı tablom var; Bir konum başka bir konum içinde olabilen bir konumda olabilir. Ben, bir üst konum göz önüne alındığında, ne kadar derin tüm torunları yerleri, alır yapmak, sadece kullanılarak nasılMySQL - Bir ağaç yapısını yinelemek

$sql = "SELECT id FROM se_locations_services WHERE parent_locationid IN 
(SELECT location_id FROM se_locations_parent WHERE parent_id = '$locationid')"; 

:

location (<id>, ....) 
location_parent (<location_id>, <parent_id>) 

İşte birinin derinliği aşağı gitmek MySQL/PHP bulunuyor MySQL? Verilerin bu tür yönetme

+0

http://stackoverflow.com/questions/587488/handling-hierarchy-data-in-database –

cevap

20

hiyerarşik verilerin yönetimi çeşitli yollarını özetleyen mysql.com de üzerinde bir good-looking article var:

fonksiyonunu nasıl uygulanacağına ilişkin bu makaleye bakın. Sorunuza tam bir çözüm sağladığını düşünüyorum ve daha az basit ancak daha hızlı yaklaşımları (ör. Yuvalanmış Setler) gösterir.

+3

+1 Burada bağlantı kurduğunuz çok ilginç bir makaleye bakın. –

+0

makalesi artık mevcut değil. –

+0

@ Makinenin hala sahip olduğu yolda. Güncellenmiş. –

0

MySQL tabloların yana can Sadece tablo yapılı veriler döndür, geri dönen ağaç yapısını nasıl hayal edersin?

[parent_id, child_id] tablosuyla seçim yapmak mümkündür, ancak geçici tablo gerektirir ve bunun MySQL üzerinde değil DB2'de yapıldığını gördüm.

Kontrol MySQL saklanan ağaç benzeri yapıların üzerinde uygulanması için bu madde: http://articles.sitepoint.com/article/hierarchical-data-database/

1

MySQL hiyerarşik fonksiyonların yerel destek yoksun, bu yüzden tekrarlama durumunu tutmak için oturum değişkenleri kullanarak onları taklit gerekecek.