php增加数量,php – 更新列数量
我有這個表模式和數據,我不知道如何更新所有parentid 7,5和1如果在parentid 7下添加了新成員示例新添加的是10.然后他所有的parentid都在樹上(注意:最多10個父母只開始parentid 7在樹上可以更新那里數量)7,5和1將被添加到500.
CREATE TABLE `mytree` (
`pid` INT(11) NOT NULL,
`memd` INT(11) NOT NULL,
`position` CHAR(1) NOT NULL,
`amount` DECIMAL(10,2) NOT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
;
pid memd position amount
0 1 1000.00
1 5 L 500.00
1 6 R 0.00
5 7 L 0.00
5 8 R 0.00
7 9 L 0.00
這是我的樹.
添加新成員10后
pid memd position amount
0 1 1500.00
1 5 L 1000.00
1 6 R 0.00
5 7 L 500.00
5 8 R 0.00
7 9 L 0.00
7 10 R 0.00
編輯
如果父母沒有孩子然后添加了新的孩子,則父母不能收到500,或者父母的數量沒有更新.
編輯最新的問題
問題如果我有一個孩子的系列,然后其中一個孩子配對.,它只會更新他的直接父母的數量,他的父母的上述父母等..,沒有更新,我怎么能更新他的父母即使它只有1個孩子,例9和10也應該收到金額,因為他們是’11’的父母
pid memd position amount
0 1 1500.00
1 5 L 1000.00
1 6 R 0.00
5 7 L 500.00
5 8 R 0.00
7 9 L 0.00
9 10 L 0.00
10 11 L 0.00
11 12 L 0.00
11 13 R 0.00
我怎樣才能做到這一點.
先感謝您.
解決方法:
我想這就是你想要的
create procedure sp_update_amt(IN p_mem INT)
BEGIN
declare cnt INT;
declare par_id INT;
declare cntr INT;
declare m_mem INT;
declare s_str VARCHAR(512);
set cntr=1;
set par_id = 1;
set m_mem = p_mem;
set s_str = '';
proc_label:BEGIN
WHILE par_id != 0 DO
SELECT pid INTO par_id FROM mytree WHERE memd=m_mem;
select count(*) into cnt FROM mytree WHERE pid=par_id;
set s_str = CONCAT(s_str,cnt,cntr,par_id,m_mem,',');
set cntr = cntr+1;
set m_mem = par_id;
IF cntr <=10 THEN
update mytree set amount = amount+500
where memd=par_id;
ELSE
update mytree set amount = amount+200
where memd=par_id;
END IF;
END WHILE;
end;
SELECT s_str;
END;
嘗試上面的代碼認為這將工作并解決您的問題
有關詳細信息,請查看link
編輯和更新的代碼
我認為這將解決您的要求.
create procedure sp_update_amt(IN p_mem INT)
BEGIN
declare cnt INT;
declare par_id INT;
declare cntr INT;
declare m_mem INT;
declare s_str VARCHAR(512);
set cntr=1;
set par_id = 1;
set m_mem = p_mem;
set s_str = '';
proc_label:BEGIN
WHILE par_id != 0 DO
SELECT pid INTO par_id FROM mytree WHERE memd=m_mem;
select count(*) into cnt FROM mytree WHERE pid=par_id;
set s_str = CONCAT(s_str,cnt,cntr,par_id,m_mem,',');
set m_mem = par_id;
IF cnt = 2 OR cntr > 1 THEN
IF cntr <= 10 THEN
update mytree set amount = amount +500
where memd=par_id;
ELSE
update mytree set amount = amount+200
where memd=par_id;
END IF;
ELSE
LEAVE proc_label;
END IF;
set cntr = cntr+1;
END WHILE;
end;
SELECT s_str;
END;
檢查數據和代碼updated的鏈接
標簽:php,mysql,database,sql
來源: https://codeday.me/bug/20190612/1223794.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的php增加数量,php – 更新列数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车险第一年没出险第二年打几折
- 下一篇: php后台无法接受文件,ios afne