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 с Oracle Heterogeneous Services

  2. Как да покажа съпоставянето на база данни в MySQL

  3. Как да получите размера на таблица в MySQL

  4. MySQL агрегатни функции без клауза GROUP BY

  5. Разбиране на HAProxy статистиката за MySQL и PostgreSQL