집 >데이터 베이스 >MySQL 튜토리얼 >수량 계층 구조를 계산하기 위해 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>
프로시저 실행
재귀를 활성화하려면 MySQL 설정을 조정하는 것이 중요합니다.
<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255;</code>
이러한 설정이 구성되면 다음과 같이 저장 프로시저를 호출할 수 있습니다.
<code class="mysql">CALL calctotal(6, @total); SELECT @total;</code>
재귀 계산 예
주어진 샘플 데이터에 대해, 항목 6이 항목 3의 하위 항목인 항목 5의 하위인 경우 저장 프로시저는 다음과 같이 총 수량을 재귀적으로 계산합니다.
4 * 2 * 10 * 3 = 240
따라서 번호 = 6인 절차는 240이 됩니다.
위 내용은 수량 계층 구조를 계산하기 위해 MySQL에서 재귀 저장 프로시저를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!