特定の項目の計算数量を決定するために MySQL で再帰ストアド プロシージャを作成するには、テーブル構造と再帰ロジックを理解する必要があります。
問題背景
列「id」、「parent_id」、および「quantity」を持つテーブルが与えられた場合、目標は、親子関係を再帰的にたどることにより、アイテムの合計数量を計算することです。たとえば、項目 6 の親が 5 (数量 4)、3 (数量 2)、2 (数量 10) であるため、項目 6 の計算数量は 240 になります。
解決策: 再帰ストアド プロシージャ
<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>
手順呼び出し
ストアド プロシージャを呼び出し、品目 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>
プロシージャの内訳
以上がMySQL で再帰ストアド プロシージャを使用して計算量を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。