수량 계층 계산을 위한 재귀 저장 프로시저
제시된 것과 같이 계층적 계산이 필요한 상황에서는 MySQL의 재귀 저장 프로시저가 필요합니다. 효율적인 솔루션을 제공할 수 있습니다.
수량 열이 항목의 수량을 나타내고 parent_id 열이 상위 항목을 나타내는 특정 테이블에 대해 저장 프로시저를 작성하여 항목의 총 수량을 재귀적으로 계산할 수 있습니다. 계층 구조의 모든 상위 항목을 고려하여 해당 항목을 고려합니다.
저장 프로시저 선언
다음 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 ;
이 저장 프로시저에서 number 매개변수는 총 수량을 계산할 항목의 ID를 나타내며 총 출력 매개변수는 계산된 결과를 보유합니다.
저장 프로시저 호출
저장 프로시저를 활용하려면 재귀 깊이에 대해 다음 세션 변수를 설정하는 것이 중요합니다.
SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255;
이러한 변수를 설정한 후 저장 프로시저를 다음 명령문을 사용하여 호출됩니다.
CALL calctotal(6, @total); SELECT @total;
위 내용은 MySQL의 재귀 저장 프로시저가 수량 계층 구조를 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!