簡體   English   中英

我想減去兩個不同表的 2 列

[英]I want to subtract 2 columns of two different tables

tbl_血:

id|qty
1  14
2  15
3  16

tbl_blood_list:

id|blood_quantity
1  1
2  1
3  1

我的問題是 tbl_blood 表的列 qty 應該減去 tbl_blood_list 表中的 Blood_quantity 列。 我需要可以在我的 php mysqli 中實現的代碼。

我試過這段代碼,但它真的無法工作:

$add_inv = "UPDATE tbl_blood
SET qty=(qty - '$blood_quantity')
WHERE id='$minus_blood_id' ";

有更有效的方法來處理這種情況,您應該為您的程序/表考慮不同的結構,為什么在 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

還:

  • 您可以考慮統一您的字段名稱(例如,'blood_qty' 而不是 'blood_quantity')
  • 確保“qty”和“blood_quantity”字段是無符號整數
  • 確保兩個“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)")

請讓我知道是否有任何問題或我誤判了您的問題

希望對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM