Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kategorie rekurencyjne z jednym zapytaniem?

Jeśli drzewo nie jest zbyt duże, możesz po prostu zbudować je w PHP, używając sprytnych odniesień.

$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);

To da ci strukturę drzewa w $tree z dziećmi w odpowiednich children -slot.

Zrobiliśmy to z dość dużymi drzewami (>> 1000 pozycji) i jest to bardzo stabilne i dużo szybsze niż robienie rekurencyjnych zapytań w 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. Wstaw do wielu tabel w jednym zapytaniu

  2. Najbardziej wydajny sposób wstawiania wierszy do bazy danych MySQL

  3. Jak mogę zmienić domyślny limit czasu połączenia Mysql podczas łączenia się przez Pythona?

  4. Jak zainstalować phpMyAdmin na zarządzanych kontach hostingowych

  5. Tworzenie aplikacji internetowej od podstaw przy użyciu Python Flask i MySQL:część 3