如何在MySQL中實作遞歸預存程序來計算數量層次結構?

Barbara Streisand
發布: 2024-10-31 19:23:02
原創
469 人瀏覽過

How to Implement a Recursive Stored Procedure in MySQL for Calculating Quantity Hierarchy?

用於計算數量層次結構的遞歸預存程序

在MySQL 中,建立遞歸預存程序

在MySQL 中,建立遞歸預存程序來計算巢狀層次結構的數量是一項挑戰可以透過精心設計的程序來克服。考慮給定的表,其中每一行代表一個具有關聯數量和潛在父項的項目。

遞迴預存程序

<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>
登入後複製

遞歸遍歷這個樹狀結構併計算總數量,可以實現以下預存程序:

過程執行

<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;</code>
登入後複製

要啟用遞歸,調整MySQL設定至關重要:

<code class="mysql">CALL calctotal(6, @total);
SELECT @total;</code>
登入後複製

配置完這些設定後,可以像這樣呼叫預存程序:

遞歸計算範例

4 * 2 * 10 * 3 = 240
登入後複製

對於給定的範例數據,其中第6 項是第5 項的子項,第5 項是第 3項的子項,依此類推,預存程序將遞歸計算總數量,如下所示:

因此,呼叫的結果是數字 = 6 的程式將是 240。

以上是如何在MySQL中實作遞歸預存程序來計算數量層次結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板