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

Bagaimana untuk Mendapatkan Kategori Rekursif dalam Satu Pertanyaan MySQL?

Barbara Streisand
Lepaskan: 2024-11-10 19:41:02
asal
742 orang telah melayarinya

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;
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan