Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我想减去两个不同表的两列_Php_Mysql_Sql - Fatal编程技术网

Php 我想减去两个不同表的两列

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' ";

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' ";

<> 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”字段都是主键
  • 您可以在两个表中添加时间戳字段以跟踪更新

如果我没有误判您的问题,因此您希望更新join,但在您的表结构中,如果两个表中都有任何公共列,则我找不到任何公共列,因此您可以在一条语句中加入并更新表,我认为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)")
如果有任何问题,请告诉我,否则我会误判您的问题


希望能对您有所帮助。

您期望的结果是什么?