Rumah >pangkalan data >tutorial mysql >Bagaimanakah Prosedur Tersimpan Boleh Melintasi Pokok BOM Hierarki dengan Cekap dalam MySQL?

Bagaimanakah Prosedur Tersimpan Boleh Melintasi Pokok BOM Hierarki dengan Cekap dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-12-06 14:39:15273semak imbas

How Can Stored Procedures Efficiently Traverse a Hierarchical BOM Tree in MySQL?

MySQL Recursive Query for Tree Traversal

Masalah:

Andaikan anda mempunyai jadual bil bahan (BOM) dengan item dan ID induk mereka. Matlamatnya adalah untuk mendapatkan semula perwakilan hierarki item dalam bentuk struktur pokok. Menggunakan pertanyaan satu peringkat biasa atau fungsi rekursif mungkin tidak cekap.

Penyelesaian:

Bahasa SQL dalam MySQL tidak menyokong pertanyaan rekursif secara asli. Untuk mengatasi had ini, seseorang boleh membuat Prosedur Tersuai (SP) untuk mencapai fungsi lintasan pokok.

SP Cadangan:

SP berikut boleh digunakan untuk melintasi BOM pokok:

  1. GetParentIDByID: Mencari ID induk bagi item yang ditentukan.
  2. GetAncestry: Mengambil semula keturunan nenek moyang item sehingga kepada yang ditentukan tahap.
  3. GetFamilyTree: Menghasilkan perwakilan hierarki keseluruhan pepohon BOM bermula daripada item akar yang diberikan.

Penggunaan:

Untuk menggunakan SP, ikuti ini langkah:

  1. Buat SP dalam pangkalan data MySQL anda menggunakan kod SQL yang disediakan.
  2. Panggil GetFamilyTree SP dengan ID item akar sebagai parameter.
  3. The SP akan mengembalikan perwakilan hierarki bagi pokok.

Contoh:

Sebagai contoh, jika anda mempunyai jadual BOM dengan data berikut:

+----+------+
| item | parent |
+----+------+
| 1  | 0    |
| 2  | 1    |
| 3  | 1    |
| 4  | 3    |
| 76 | 3    |
+----+------+

Memanggil GetFamilyTree (1) akan mengembalikan perwakilan hierarki berikut:

[
  {
    "item": 1,
    "children": [
      {
        "item": 2,
        "children": []
      },
      {
        "item": 3,
        "children": [
          {
            "item": 4,
            "children": []
          },
          {
            "item": 76,
            "children": []
          }
        ]
      }
    ]
  }
]

Perwakilan ini menyediakan semua dahan kanak-kanak di dalam pokok, membolehkan mendapatkan semula perhubungan item dengan cekap.

Atas ialah kandungan terperinci Bagaimanakah Prosedur Tersimpan Boleh Melintasi Pokok BOM Hierarki dengan Cekap dalam 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