从另一个表更新MySQL表

时间:2013-06-01 11:48:03

标签: mysql sql

我有一个名为salesinvoiceitems的表,其中包含

字段
  1. invoiceNumber
  2. 名称
  3. 数量
  4. ledgerId
  5. 一个平衡表,字段为

    1. invoiceNumber
    2. ledgerId
    3. 金额
    4. 在余额表中,我有包含发票编号的所有行。我想从salesinvoiceitems表更新金额。金额需要按如下方式计算:

      来自salesinvoicetable的一张发票的所有行的(OF RATE X QTY)。

      我试过这个但没有工作:

      INSERT INTO balancetable (ledgerId,invoiceNumber,date,company,triggerredby)
      SELECT buyerId,invoiceNumber,invoiceDate,company,"salesinvoices" as triggerredby
      FROM salesinvoices
      

      请说清楚。

2 个答案:

答案 0 :(得分:1)

目前还不清楚为什么要在更新余额记录时尝试插入。或者你的意思是MERGE

如果您确实要更新余额表,可以使用子选项解决它,如下所示:

UPDATE BALANCE B
  SET AMOUNT = (SELECT ROUND(SUM(QTY * RATE),2) 
                  FROM SALESINVOICEITEMS S
                 WHERE S.INVOICENUMBER = B.INVOICENUMBER)

可以在insert语句中使用相同的逻辑。

如果您想合并余额表上的数据,这意味着您必须根据行的存在进行插入或更新,请尝试检查此链接:

How can I merge two MySql tables?

答案 1 :(得分:0)

如果你不想合并,这可能不是最好的方法,但它应该有效:

`//Connect To MySQL
mysql_connect("SERVER","USER","PASSWORD");
mysql_select_db("productphotos_userlogins");

//Info Gathering
$infogatherp1 = mysql_query("SELECT * FROM members WHERE name='$myusername'");  
while($infogatherp2 = mysql_fetch_array($infogatherp1)) {
$invoicenumber = $infogatherp2['invoiceNumber'];
$ledgerid = $infogatherp2['ledgerId'];
$amount = $infogatherp2['amount'];
}`

然后你可以用变量更新另一个表 注意:方括号中的位([])是表中要从中获取数据的列名。

希望这会有所帮助并祝你好运!