Php 我想减去两个不同表的两列
tbl_血液:Php 我想减去两个不同表的两列,php,mysql,sql,Php,Mysql,Sql,tbl_血液: id|qty 1 14 2 15 3 16 tbl_血液_列表: id|blood_quantity 1 1 2 1 3 1 我的问题是tbl_血量表的列数量应该减去tbl_血量表中的血量列。我需要的代码,我可以实现在我的php mysqli 我尝试过此代码,但它确实无法工作: $add_inv = "UPDATE tbl_blood SET qty=(qty - '$blood_quantity') WHERE id='$minus_blood_id' ";
id|qty
1 14
2 15
3 16
tbl_血液_列表:
id|blood_quantity
1 1
2 1
3 1
我的问题是tbl_血量表的列数量应该减去tbl_血量表中的血量列。我需要的代码,我可以实现在我的php mysqli
我尝试过此代码,但它确实无法工作:
$add_inv = "UPDATE tbl_blood
SET qty=(qty - '$blood_quantity')
WHERE id='$minus_blood_id' ";
<> P>有更有效的方法来处理这种情况,你应该为你的程序/表考虑一个不同的结构,当TBLIL血液可以直接递减时,为什么有两个单独的表。 根据您当前的结构,下面的代码可以工作:
<?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
另外:
<?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
-
你可以考虑协调你的域名(例如“血型QT”而不是“血量”)。
- 确保“数量”和“血量”字段是无符号整数
- 还要确保两个“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)")
如果有任何问题,请告诉我,否则我会误判您的问题
希望能对您有所帮助。您期望的结果是什么?