2013-06-01 129 views
0

我有一个包含字段从另一个表更新MySQL表

  1. invoiceNumber
  2. 数量
  3. ledgerId

并有一台称为salesinvoiceitems与领域的平衡表作为

  1. invoiceNumber
  2. ledgerId

在平衡表我有一个包含发票号码的所有行。我想更新salesinvoiceitems表中的金额。金额需要按如下方式计算:

对于salesinvoicetable中一个发票的所有行的总和(RATE X QTY)。

我都试过,但不工作:

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

请一些启发。

+0

当你发布一个问题时不要大写你的标题......这就像大声呼喊 –

+0

你的问题似乎与数据,也许约束违规?刚刚在'5.5.31-0ubuntu0.13.04.1'上测试过。 – Sam

回答

1

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

如果你想更新余额表,你可以用子选择如下解决这个问题:

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

同样的逻辑可以在插入语句中使用。

如果你的意思是合并资产负债表中的数据,这意味着你将不得不插入或更新依赖于该行的存在,请检查该链接了:

How can I merge two MySql tables?

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']; 
}` 

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

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

+0

我会确保在答案/问题中排除任何特定的登录信息 - 通用用户名/密码可用于示例目的。 – Jason

+0

哦,谢谢@Jason,我没有发现。 – samdy1

+0

没问题,但不要忘记 - 以前版本的东西会保存,所以我会在您的网站上更改您的用户名和密码以防止不必要的访问。 – Jason