Détermination de la quantité totale à l'aide d'une procédure stockée récursive dans MySQL
Pour répondre au besoin d'une procédure stockée récursive dans MySQL qui calcule la quantité totale Dans une structure arborescente dans une table, vous pouvez utiliser la requête suivante :
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 ;
Cette procédure stockée initialise les variables pour l'ID parent et les totaux temporaires. Il récupère ensuite les informations nécessaires dans la table « test ». Si l'ID parent est nul, la procédure définit le total sur la quantité actuelle. Sinon, il s'appelle récursivement avec l'ID parent et accumule le total en conséquence.
Pour appeler la procédure, vous devez définir certaines variables de session :
SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255; CALL calctotal(6, @total); SELECT @total;
Remplacer le "6" par votre identifiant souhaité vous fournira la quantité totale calculée à partir du nœud racine往上.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!