2017-06-08 7 views
1

2つの外部キーを組み合わせて列を更新する方法を検討しています。2つの外部キーに基づいてSQLの列を更新する

I持って一つのテーブル、次のようになります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

オーダーごとに1つの製品と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

魅力のように動作します、ありがとう! –

関連する問題