Mencipta prosedur tersimpan rekursif dalam MySQL untuk menentukan kuantiti terkira item tertentu memerlukan pemahaman struktur jadual dan logik rekursif.
Latar Belakang Masalah
Memandangkan jadual dengan lajur 'id', 'parent_id' dan 'kuantiti', matlamatnya adalah untuk mengira jumlah kuantiti item dengan secara rekursif melalui hubungan ibu bapa-anaknya. Sebagai contoh, item 6 mempunyai kuantiti yang dikira sebanyak 240 kerana ibu bapanya ialah 5 (kuantiti 4), 3 (kuantiti 2), dan 2 (kuantiti 10).
Penyelesaian: Prosedur Tersimpan Rekursif
<code class="mysql">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 ;</code>
Prosedur Invocation
Untuk memanggil prosedur yang disimpan dan mendapatkan kuantiti yang dikira untuk item 6:
<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255; CALL calctotal(6, @total); SELECT @total;</code>
Pecahan Prosedur
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menggunakan Prosedur Tersimpan Rekursif untuk Mengira Kuantiti Dikira dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!