2013-06-01 8 views
0

У меня есть таблица под названием salesinvoiceitems, который содержит поля, какОбновление MySQL таблицы из другой таблицы

  1. INVOICENUMBER
  2. имя
  3. шт
  4. скорость
  5. ledgerId

и А балансовая таблица с полями

  1. InvoiceNumber
  2. ledgerId
  3. количество

В таблице баланса у меня есть все строки, содержащие номера счетов-фактур. Я хочу обновить сумму из таблицы salesinvoiceitems. Сумма должна быть рассчитана следующим образом:

SUM OF (RATE X QTY) для всех строк одного счета-фактуры из salesinvoicetable.

Я попытался это, но не работает:

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

Ох спасибо @ Джейсон, я этого не заметил. – samdy1

+0

Нет проблем, но не забывайте, что предыдущая версия сохранена, поэтому я бы изменил ваше имя пользователя и пароль на вашем сайте, чтобы предотвратить нежелательный доступ. – Jason

Смежные вопросы