Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक ही प्रश्न के साथ पुनरावर्ती श्रेणियां?

यदि पेड़ बहुत बड़ा नहीं है, तो आप कुछ चतुर संदर्भों का उपयोग करके बस PHP में ट्री का निर्माण कर सकते हैं।

$nodeList = array();
$tree     = array();

$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
    $nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}
unset($node);
unset($nodeList);

यह आपको $tree . में ट्री स्ट्रक्चर देगा संबंधित children . में बच्चों के साथ -स्लॉट।

हमने इसे काफी बड़े पेड़ों (>> 1000 आइटम) के साथ किया है और यह MySQL में पुनरावर्ती क्वेरी करने की तुलना में बहुत स्थिर और बहुत तेज़ है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या जुनीट परीक्षण मामलों के लिए MySQL इन-मेमोरी चलाने का कोई तरीका है?

  2. Ubuntu 14.04 पर MySQL 5.5 से 5.6 में अपग्रेड कैसे करें

  3. MySQL में एक संचयी योग कॉलम बनाएं

  4. मैं स्वत:पूर्ण के लिए PHP के साथ MYSQL में कंपनी के नामों का एक अस्पष्ट मिलान कैसे करूं?

  5. कॉलम नाम पाने के लिए MySQL क्वेरी?