2014-01-16 3 views
0

У меня есть три таблицы t1, t2 и t3.Таблица обновлений с использованием других двух таблиц

То, что я хочу, чтобы обновить таблицу t1 с t1.Quantity= sum(t2.quantity) - sum(t3.quantity) where id= $_POST['id']

КАК НАПИСАТЬ ЗАПРОС НА ЭТО.

Я пробовал этот ... но его не работает.

INSERT INTO Products 
    (`ProductID`, `ProductName`, `TotalQuantity`, 
    `TotalPrice`, `DateOfLastupdate`) 
values 
    ('$ProductID', '$ProductName', '$Quantity', 
    '$TotalPrice', '$PurchaseDate') 
ON DUPLICATE KEY 
    UPDATE Products.TotalQuantity = 
    (select sum(Products_Purchased.Quantity) from Products_Purchased 
     where ProductID = '$ProductID') 
    - (select sum(Products_Sold.Quantity) from Products_Sold 
      where ProductID = '$ProductID') 
+0

, если запись не существует, то он должен быть вставлен другой должен быть обновлен .. вот почему им с помощью вставки на дубликат ключа – mona

ответ

0

попробовать это

update products t1, 
(select productid,sum(Products_Purchased.Quantity) as x from Products_Purchased 
    group by productid having ProductID = '$ProductID') t2, 
(select productid,sum(Products_Sold.Quantity) as y from Products_Sold 
    group by productid having ProductID = '$ProductID') t3 
set TotalQuantity=t2.x-t3.y where t1.ProductID = '$ProductID' 
     and t1.productid=t2.productid and t1.productid=t3.productid 
+0

, но я могу использовать тот же оператор с вставкой на дубликат ключа? – mona

+0

должен быть может .. просто попробуйте в своем развитии: D –

+0

Я тоже пробовал это на терминале, но это не работает. – mona

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