Rumah > pangkalan data > tutorial mysql > Bagaimanakah Carian Pertama Kedalaman MySQL Berkesan Mendapatkan Semua Nenek Moyang Nod dalam Struktur Hierarki?

Bagaimanakah Carian Pertama Kedalaman MySQL Berkesan Mendapatkan Semua Nenek Moyang Nod dalam Struktur Hierarki?

Barbara Streisand
Lepaskan: 2024-12-08 10:27:15
asal
156 orang telah melayarinya

How Can MySQL's Depth-First Search Effectively Retrieve All Ancestors of a Node in a Hierarchical Structure?

Pertanyaan Hierarki dalam MySQL: Melintasi Ancestry dengan Depth-First Search

Menentukan perhubungan keturunan dalam data hierarki ialah tugas biasa dalam pengurusan pangkalan data. Dalam MySQL, pertanyaan hierarki membolehkan anda menavigasi dan mendapatkan semula data daripada struktur bersarang dengan berkesan.

Andaikan anda mempunyai jadual bernama 'mytable' dengan dua lajur, 'a' dan 'b,' mewakili hierarki ibu bapa-anak perhubungan:

| a | b |
----------
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 3 | 6 |
| 4 | 7 |
Salin selepas log masuk

Pertimbangkan senario di mana anda ingin mendapatkan semula semua nenek moyang yang diberikan nod, sebagai contoh, mencari semua ibu bapa, datuk dan nenek, dan seterusnya, nod 5.

Penyelesaian utilizzando l'algoritmo di ricerca dalam profondità:

MySQL menyediakan penyelesaian pertanyaan hierarki menggunakan pendekatan carian pertama mendalam (DFS). Berikut ialah pertanyaan yang menyelesaikannya:

SELECT  @id :=
        (
        SELECT  senderid
        FROM    mytable
        WHERE   receiverid = @id
        ) AS person
FROM    (
        SELECT  @id := 5
        ) vars
STRAIGHT_JOIN
        mytable
WHERE   @id IS NOT NULL
Salin selepas log masuk

Analisis:

  • Pertanyaan bersarang memulakan pembolehubah '@id' dengan nod (5) yang nenek moyang yang ingin kami cari.
  • Pertanyaan luar secara berulang mendapatkan induk langsung semasa '@id' menggunakan medan 'senderid' 'mytable.'
  • 'STRAIGHT_JOIN' memastikan bahawa pertanyaan mengikut hierarki tanpa sebarang pengoptimuman yang boleh memintas hubungan ibu bapa-anak.
  • Pembolehubah '@id' dikemas kini dengan 'senderid' nod induk dalam setiap lelaran dan proses berterusan sehingga tiada lagi ibu bapa.

Dengan melaksanakan pertanyaan ini, anda akan mendapatkan semula senarai nenek moyang untuk nod 5: 4, 3, 2, dan 1. Kaedah ini merentasi hierarki dengan berkesan menggunakan pendekatan DFS, membolehkan anda untuk navigasi struktur ibu bapa-anak yang kompleks dalam pangkalan data MySQL anda.

Atas ialah kandungan terperinci Bagaimanakah Carian Pertama Kedalaman MySQL Berkesan Mendapatkan Semua Nenek Moyang Nod dalam Struktur Hierarki?. 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