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 ;
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;
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!