> 데이터 베이스 > MySQL 튜토리얼 > 수량 계층 구조를 계산하기 위해 MySQL에서 재귀 저장 프로시저를 구현하는 방법은 무엇입니까?

수량 계층 구조를 계산하기 위해 MySQL에서 재귀 저장 프로시저를 구현하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-31 19:23:02
원래의
492명이 탐색했습니다.

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

수량 계층 구조 계산을 위한 재귀 저장 프로시저

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿