从多个表更新多个值

时间:2013-08-31 16:45:48

标签: php mysql

我有2个名为“sales”和“rsales”的表,

现在我有来自“sales”的这个ff数据

id | pcode | total | 
2  |  122  |  20   |  
3  |  122  |  20   | 
4  |  321  |  30   |
5  |  321  |  30   |

不要错过为什么我有重复的pcode,总数,折扣,这只是因为当我“添加订单”或点击我的提交按钮时,它就像我上面所说的那样以这种方式保存到“销售”。我有这个代码与你分享如何更新我的tbl“销售”,它的效果非常好。我做的是我得到了身份证。比方说,例如我从“sales”获得id“1”,所以当我在下面运行我的查询时,它更新id“1”而且id“2”,因为它们是相同的“pcode”,这对我的查询来说是显而易见的。我没有问题更新我的“销售”

mysql_query("UPDATE sales SET total = '$total_discount' where pcode = '$pcode' "); 

所以我的问题是我有这个ff代码更新我的tbl“rsales

   mysql_query("UPDATE rsales SET total = '$total_discount' ,discount = '$tot'  WHERE   rsales.sales_id IN (SELECT sales.id FROM sales)");

我想要的是,当我在我的tbl“sales”中更新特定的pcode时,tbl“rsales”也必须更新。所以,举个例子,我可以通过pcode 122更新“sales”中的“total”,所以从20开始我将它改为40,所以我的tbl“rsales”必须看起来像这样

id | pcode | total | sales_id|
2  |  122  |  40   |  2      |
3  |  122  |  40   |  3      |
4  |  321  |  30   |  4      |
5  |  321  |  30   |  5      |

但我的查询显示了这个结果。 allvrows updates.i无法更新“rsales”中的“total”请帮助我。每一个帮助都非常有帮助。

id | pcode | total | sales_id|
2  |  122  |  40   |  2      |
3  |  122  |  40   |  3      |
4  |  321  |  40   |  4      |
5  |  321  |  40   |  5      |

1 个答案:

答案 0 :(得分:0)

请尝试以下方法。另外,根据您的表格布局,您错过了discount列,我假设它在测试数据库中。

UPDATE sales AS t1, rsales AS t2
SET t1.total = '$total_discount',
t2.total = '$total_discount',
t2.discount = '$tot'
WHERE t1.pcode = '$pcode'
AND t2.pcode = t1.pcode

顺便说一下,由于这一行,你正在修改所有行:

WHERE rsales.sales_id IN (SELECT sales.id FROM sales)

在此,您要更新rsales,其中sales_idsales.id字段的IN(其中一个)。你拉了所有sales.id。如果您需要具体指定ID,请将其添加到上面查询的底部:

AND t1.id = '$id'
AND t2.sales_id = t1.id

没有模拟你的数据库,所以我没有测试过它。