剔除第一張表的資料時,修改第二張表的相關欄位的數值

來源:互聯網
上載者:User
刪除第一張表的資料時,修改第二張表的相關欄位的數值
表xf
xf_id vip total
1 1 10
2 1 100
3 2 80
4 3 50


表vip
vip jifen
1 1000
2 500
3 800

$sql = "delete from " . $fdyu->table('xf') .
" WHERE xf_id " . db_create_in(join(',', $_POST['checkboxes'])) . //假如$_POST['checkboxes']就是xf_id:1,2,3,4
" AND school_id=" . $school_id;
$db->query($sql);

那麼在刪除xf_id的同時,表vip裡的
1 jifen=1000-110=890 如果xf裡有多個一樣的vip,則減去總和,如xf表裡vip為1的有兩條資料,他們的total和是110,
則減110
2 jifen=500-80=420
3 jifen=800-50=750
也就是說在刪除表xf 裡的資料的同時,表vip裡的jifen要減去xf表裡的total
------解決方案--------------------
大概思路

1.先擷取要刪除記錄的vip,和每個vip共刪除的總分
select vip,sum(total) from xf where xf_id in(1,2,3,4) group by vip;
儲存為數組
vip為key
total為value

$arr = array(
'1' => 110,
'2' => 80,
'3' => 50
);

2.刪除對應xf_id的記錄
delete from xf where xf_id in(1,2,3,4);

3.修改vip表
foreach($arr as $vip=>$total){
update vip set jifen=jifen-$total where vip=$vip
}

------解決方案--------------------
可以考慮用觸發器,在MYSQL執行,給你一個例子:

create trigger delete_jifen before delete on jifen
for each row
BEGIN
UPDATE users SET users.sum = users.sum -
(SELECT sum(jifen.jifen) from jifen WHERE jid = old.jid) where users.userid = old.userid;
END
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.