简体   繁体   中英

I want to subtract 2 columns of two different tables

tbl_blood:

id|qty
1  14
2  15
3  16

tbl_blood_list:

id|blood_quantity
1  1
2  1
3  1

My question is the tbl_blood table's column qty should subtract the blood_quantity column in tbl_blood_list's table. I need codes that I can implement in my php mysqli.

I have tried this code but it really cannot work:

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

There are more efficient ways to handle this kind of situation, you should consider a different structure for your program/tables, why having two separate tables when tbl_blood could be decremented directly.

With your current structure, the code below works:

<?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');

?>

Result:

tbl_blood

id|qty
1  13
2  14
3  15

Also:

  • You may consider harmonizing your field names (eg 'blood_qty' and not 'blood_quantity')
  • Make sure "qty" and "blood_quantity" fields are unsigned integers
  • Make sure too that both "id" fields are primary keys
  • You may add a timestamp field in both tables to keep track of updates

If im not misjudging your question so you want to update join but in your table structure i can't find any common column if there is Any common column in both table so you can join and update your table in one statement i think id are common in both table if yes so try this

$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)")

Please let me know if there is any problem or i misjudge your issue

Hope it's help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM