Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kategori rekursif dengan satu kueri?

Jika pohon tidak terlalu besar, Anda cukup membangun pohon di PHP menggunakan beberapa referensi cerdas.

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

Ini akan memberi Anda struktur pohon di $tree dengan anak-anak di masing-masing children -slot.

Kami telah melakukan ini dengan pohon yang cukup besar (>> 1000 item) dan ini sangat stabil dan jauh lebih cepat daripada melakukan kueri rekursif di 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. Fungsi MySQL ASIN() – Mengembalikan Arc Sinus dari Angka

  2. Fungsi MySQL IF() Dijelaskan

  3. PHP MySQLI Mencegah Injeksi SQL

  4. Bagaimana cara mengubah tindakan referensial kunci asing? (perilaku)

  5. Mesin Pilihan MySQL – MyISAM atau InnoDB