2015-03-17 6 views
0

Я пытаюсь запустить обновление для следующего оператора select, но я не думаю, что mysql очень любит мой синтаксис, пожалуйста, посоветуйте?Mysql Update select statement

UPDATE `invoice_lines` 
SET 
`invoice_lines`.`cost_price` = Costnew, 
`invoice_lines`.`list_price` = Listnew, 
`invoice_lines`.`unit_price` = Unitnew 
SELECT (quote_lines.`list_price` * products.commision_pers/100) AS Listnew, 
(quote_lines.`cost_price` * products.commision_pers/100) AS Costnew, 
(quote_lines.`unit_price` * products.commision_pers/100) AS Unitnew 
FROM `quote_lines` 
INNER JOIN quotes 
ON quotes.id = quote_lines.`quote_id` 
INNER JOIN QuotePers 
ON quoteid = quotes.id 
INNER JOIN products 
ON products.id = quote_lines.`related_id` 
INNER JOIN invoice 
ON invoice.`from_quote_id` = QuotePers.quoteid 
INNER JOIN invoice_lines 
ON invoice_lines.`invoice_id` = invoice.id 
WHERE products.id = invoice_lines.`related_id` 
AND prodid = invoice_lines.related_id 
AND invoice_id = invoice.id 
GROUP BY quotes.id,products.`id` 

ответ

0

Buddy, попробуйте передать имена таблиц, из которых эти столбцы приходят из в where состоянии и в следующий раз вам нужно использовать имя_таблицы псевдонимами при использовании таких больших запросов :)

UPDATE invoice_lines 
SET 
invoice_lines.cost_price = Costnew, 
invoice_lines.list_price = Listnew, 
invoice_lines.unit_price = Unitnew 
SELECT (quote_lines.list_price * products.commision_pers/100) AS Listnew, 
(quote_lines.cost_price * products.commision_pers/100) AS Costnew, 
(quote_lines.unit_price * products.commision_pers/100) AS Unitnew 
FROM quote_lines 
INNER JOIN quotes 
ON quotes.id = quote_lines.quote_id 
INNER JOIN QuotePers 
ON quote_lines.quoteid = quotes.id 
INNER JOIN products 
ON products.id = quote_lines.`related_id` 
INNER JOIN invoice 
ON invoice.from_quote_id = QuotePers.quoteid 
INNER JOIN invoice_lines 
ON invoice_lines.invoice_id = invoice.id 
WHERE products.id = invoice_lines.related_id 
AND quote_lines.prodid = invoice_lines.related_id 
AND quote_lines.invoice_id = invoice.id 
GROUP BY quotes.id,products.id 
0

Try это, я не могу проверить это, как я не схему базы данных:

UPDATE `invoice_lines` 
INNER JOIN quotes 
ON quotes.id = quote_lines.`quote_id` 
INNER JOIN QuotePers 
ON quoteid = quotes.id 
INNER JOIN products 
ON products.id = quote_lines.`related_id` 
INNER JOIN invoice 
ON invoice.`from_quote_id` = QuotePers.quoteid 
INNER JOIN invoice_lines 
ON invoice_lines.`invoice_id` = invoice.id 
WHERE products.id = invoice_lines.`related_id` 
AND prodid = invoice_lines.related_id 
AND invoice_id = invoice.id 
SET 
`invoice_lines`.`cost_price` = (quote_lines.`cost_price` * products.commision_pers/100), 
`invoice_lines`.`list_price` = (quote_lines.`list_price` * products.commision_pers/100), 
`invoice_lines`.`unit_price` = (quote_lines.`unit_price` * products.commision_pers/100) 

надеюсь, что он получает вас на правильном пути. Также проверьте это related question