2010-03-04 16 views
8

मेरे पास एक डेटाबेस तालिका है जो एक साथ स्थानों को लिंक करती है; एक स्थान किसी स्थान पर हो सकता है, जो किसी अन्य स्थान के अंदर हो सकता है।MySQL - एक वृक्ष संरचना को रिकर्स करना

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

यहाँ MySQL/पीएचपी एक की गहराई के लिए नीचे जाने के लिए है:

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

मैं कैसे, एक माता पिता स्थान को देखते हुए अपने सभी सन्तान स्थानों, चाहे कितना गहरा हो जाता है ऐसा करने के लिए, बस का उपयोग कर माई एसक्यूएल?

+0

http://stackoverflow.com/questions/587488/handling-hierarchy-data-in-डेटा –

उत्तर

20

एक good-looking article mysql.com पर अधिक श्रेणीबद्ध डेटा के प्रबंधन के विभिन्न तरीकों की रूपरेखा नहीं है:

फ़ंक्शन को लागू करने पर यह लेख देखें। मुझे लगता है कि यह आपके प्रश्न का पूरा समाधान प्रदान करता है, और विभिन्न कम सरल, लेकिन तेज़ दृष्टिकोण (उदा। नेस्टेड सेट) दिखाता है।

+3

+1 यहां बहुत दिलचस्प लेख है जो आपने यहां लिंक किया है। –

+0

आलेख अब उपलब्ध नहीं है। –

+0

@ एडी जिस तरह से बैक मशीन अभी भी है। अपडेट किया गया। –

0

mysql बयान के बाद से कर सकते हैं केवल टेबल-संरचित डेटा लौटाएं, आप लौटे हुए पेड़-संरचना की कल्पना कैसे करते हैं?

[parent_id, child_id] तालिका के साथ चयन करना संभव है, लेकिन इसे अस्थायी तालिका की आवश्यकता है और मैंने इसे डीबी 2 पर किया है, न कि MySQL पर।

चेक MySQL में संग्रहीत पेड़ की तरह ढांचे पर लागू करने के लिए इस लेख: http://articles.sitepoint.com/article/hierarchical-data-database/

1

MySQL श्रेणीबद्ध कार्यों की देशी समर्थन का अभाव है, तो आप प्रत्यावर्तन राज्य रखने के लिए सत्र चर का उपयोग कर उन्हें अनुकरण करने के लिए होगा।

संबंधित मुद्दे