tbl_blood:
id|qty
1 14
2 15
3 16
tbl_blood_list:
id|blood_quantity
1 1
2 1
3 1
我的问题是tbl_blood表的列数量应减去tbl_blood_list的表中的blood_quantity列。我需要可以在php mysqli中实现的代码。
我已经尝试过此代码,但它确实无法工作:
$add_inv = "UPDATE tbl_blood
SET qty=(qty - '$blood_quantity')
WHERE id='$minus_blood_id' ";
答案 0 :(得分:0)
有更有效的方法来处理这种情况,您应该为程序/表考虑不同的结构,为什么当直接减少tbl_blood时有两个单独的表。
在您当前的结构下,以下代码适用:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=blood', 'user', 'password');
/* Retrieve values to update */
$result = $pdo->query('
SELECT tb.id, (tb.qty - tbl.blood_quantity) n
FROM tbl_blood tb
LEFT JOIN tbl_blood_list tbl ON (tbl.id = tb.id)');
/* Update */
foreach ($result as $row)
$pdo->query('UPDATE tbl_blood SET qty = '.(int)$row['n'].' WHERE id = '.(int)$row['id'].' LIMIT 1');
?>
结果:
tbl_blood
id|qty
1 13
2 14
3 15
也:
答案 1 :(得分:0)
如果我不误解您的问题,所以您想更新联接,但是在表结构中,如果两个表中都有任何共同的列,我将找不到任何公共列,因此您可以在一个表中联接和更新表如果是的话,我认为ID在两个表中都是通用的,请尝试
$pdo->query("UPDATE tbl_blood AS tb JOIN tbl_blood_list AS tbl ON (tbl.id = tb.id) SET tb.qty = (tb.qty - tbl.blood_quantity)")
请让我知道是否有任何问题或我误判了您的问题
希望对您有帮助。