Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Kategori Rekursif dalam Satu Pertanyaan MySQL?

Bagaimana untuk Mendapatkan Kategori Rekursif dalam Satu Pertanyaan MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-10 19:41:02692semak imbas

How to Retrieve Recursive Categories in a Single MySQL Query?

Pendapatan Kategori Rekursif dengan Pertanyaan MySQL Tunggal

Dalam aplikasi web, menyusun kandungan ke dalam kategori hierarki adalah perkara biasa. Struktur kategori kompleks, seperti pokok, memerlukan pengendalian khusus untuk mendapatkan semula. Artikel ini meneroka cara paling berkesan untuk mengambil kategori rekursif dengan satu pertanyaan MySQL.

Membina pepohon kategori dalam PHP menggunakan rujukan mengoptimumkan proses. Pertanyaan mendapatkan semula kategori dan ID induknya, yang disimpan dalam tatasusunan bersekutu ($nodeList). Tatasusunan distrukturkan untuk membuat rujukan hierarki di mana setiap induk nod muncul dalam kekunci 'induk'nya.

Pembinaan pepohon berlaku dalam kod berikut:

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

Gelung ini berulang ke atas nod , dan jika nod tidak mempunyai induk atau induk tidak wujud dalam tatasusunan, nod itu ditambahkan pada tatasusunan $tree. Jika tidak, nod itu ditambahkan sebagai anak kepada tatasusunan 'anak' induknya.

Hasilnya ialah struktur pokok hierarki yang disimpan dalam tatasusunan $tree, dengan setiap nod mengandungi rujukan kanak-kanak. Pendekatan pertanyaan tunggal ini jauh lebih pantas daripada menggunakan pertanyaan MySQL rekursif, walaupun untuk pokok kategori besar.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kategori Rekursif dalam Satu Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn