2013-06-01 127 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