Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jumlah Kuantiti Sehingga Struktur Pokok dalam MySQL menggunakan Prosedur Tersimpan Rekursif?

Bagaimana untuk Mengira Jumlah Kuantiti Sehingga Struktur Pokok dalam MySQL menggunakan Prosedur Tersimpan Rekursif?

Barbara Streisand
Lepaskan: 2024-11-03 08:02:30
asal
743 orang telah melayarinya

How to Calculate Total Quantity Up a Tree Structure in MySQL using a Recursive Stored Procedure?

Menentukan Jumlah Kuantiti menggunakan Prosedur Tersimpan Rekursif dalam MySQL

Untuk memenuhi keperluan prosedur tersimpan rekursif dalam MySQL yang mengira jumlah kuantiti sehingga struktur seperti pepohon dalam jadual, anda boleh menggunakan pertanyaan berikut:

DELIMITER $$

CREATE PROCEDURE calctotal(
   IN number INT,
   OUT total INT
)

BEGIN

   DECLARE parent_ID INT DEFAULT NULL ;
   DECLARE tmptotal INT DEFAULT 0;
   DECLARE tmptotal2 INT DEFAULT 0;

   SELECT parentid   FROM test   WHERE id = number INTO parent_ID;   
   SELECT quantity   FROM test   WHERE id = number INTO tmptotal;     

   IF parent_ID IS NULL
    THEN
    SET total = tmptotal;
   ELSE     
    CALL calctotal(parent_ID, tmptotal2);
    SET total = tmptotal2 * tmptotal;   
   END IF;

END$$

DELIMITER ;
Salin selepas log masuk

Prosedur tersimpan ini memulakan pembolehubah untuk ID induk dan jumlah sementara. Ia kemudian mendapatkan semula maklumat yang diperlukan daripada jadual "ujian". Jika ID induk adalah batal, prosedur menetapkan jumlah kepada kuantiti semasa. Jika tidak, ia secara rekursif memanggil dirinya sendiri dengan ID induk dan mengumpulkan jumlah yang sewajarnya.

Untuk memanggil prosedur, anda perlu menetapkan pembolehubah sesi tertentu:

SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255; 

CALL calctotal(6, @total);
SELECT @total;
Salin selepas log masuk

Menggantikan "6" dengan ID yang anda inginkan akan memberikan anda jumlah kuantiti yang dikira daripada nod akar往上.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Kuantiti Sehingga Struktur Pokok dalam MySQL menggunakan Prosedur Tersimpan Rekursif?. 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