2017-06-08 62 views
1

我想知道如何通過組合兩個外鍵來更新列。基於兩個外鍵在SQL中更新列

我有一個表,FoodPackage,它看起來像這樣:

create table FoodPackage(
PackageNumber int primary key auto_increment, 
name varchar(45), 
price int); 

另一個表,產品,它看起來像這樣:

create table Product(
ProductID int primary key auto_increment, 
Category varchar(45), 
ProductName varchar(45), 
Price int, 
Allergy varchar(45)); 

最後,訂單,這看起來是這樣的:

create table Orders(
Ordernumber int primary key auto_increment, 
PackageNumber int not null, 
ProductID int not null, 
UserID int not null, 
Frequency int, 
TotalPrice int, 
OrderStatus varchar(45), 
FOREIGN KEY(PackageNumber) 
    REFERENCES FoodPackage(PackageNumber), 
FOREIGN KEY(ProductID) 
    REFERENCES Product(ProductID), 
FOREIGN KEY(UserID) 
    REFERENCES Users(UserID)); 

我想要做的是根據FoodPack的值更新totalprice列age.price和Product.Price合併。我曾嘗試使用這樣的更新語句:

UPDATE Orders, FoodPackage, Product SET Orders.TotalPrice= FoodPackage.Price + Product.Price; 

但是,這隻會給我一個常數值。

真的很感謝任何幫助!

+1

您每個訂單隻能訂購一個產品和一個包裝? – Barmar

+0

@Barmar是的,現在是一個問題。你知道我怎麼可以添加這樣的可能性,允許用戶在訂單時註冊多個產品和包? –

+1

您應該使用將訂單與產品關聯的多對多聯結表格,以及將訂單與包裹關聯的另一個表格。 – Barmar

回答

0

您需要表格之間的連接條件。

UPDATE Orders AS o 
JOIN FoodPackage AS f ON o.PackageNumber = f.PackageNumber 
JOIN Product AS p ON o.ProductID = p.ProductID 
SET o.TotalPrice = f.Price + p.Price 
+0

作品像一個魅力,謝謝! –