0

ブック私はOrder.QuantityOrder.B_IDがにFKでBook.Unit_Priceを乗じてTOTAL_PRICEを取得できますか計算列(のMicrosoft SQL Server 2014)

| B_ID | Name | Unit_Price| 
|------+---------+-----------| 
| B01 | Math |  25 | 
| B02 | Science |  34 | 

注文

| O_ID | B_ID | Quantity |Total_Price| 
|------+------+-----------+-----------| 
| O01 | B01 |  2  |  ?  | 
| O02 | B02 |  5  |  ?  | 

Book.B_ID。ありがとうございました!

+0

このリンクの画像を確認してください。あなたは結合の明確なアイデアを持っています。このタイプのクエリを理解するのに役立ちます。 http://stackoverflow.com/questions/35349303/php-compare-two-tables-and-store-result-in-third-table/35349429#35349429 – Mytroy2050

+0

@ Mytroy2050ありがとうございました! –

答えて

1

あなたは計算列関数を使用する関数を作成することができます。

CREATE FUNCTION dbo.GetTotalPrice(INT @id) 
RETURNS DECIMAL(19,4) 
AS 
BEGIN 
    DECLARE @ret DECIMAL(19,4) 
    SELECT @ret = O.Quantity * B.Unit_Price 
       FROM Order O 
        INNER JOIN Book B 
        ON O.B_ID = B.B_ID 
        WHERE B.B_ID = @id 
      IF (@ret IS NULL) 
      SET @ret = 0 
      RETURN @ret 
END 

ALTER TABLE dbo.Order 
    ADD Total_Price AS dbo.GetTotalPrice(O_ID) 
+0

ありがとうございます! –

+0

Total_Priceがすべて0.0000になるのはなぜですか?あなたのコードに従いましたが、私は最初の行を次のように変更しました:CREATE FUNCTION dbo.GetTotalPrice(@id VARCHAR(5)) –

+0

おそらく@retがnullであるためです。あなたは正しいIDを渡していますか?クエリを単独で実行してみてください。 –

2

あなたがVIEWを作成する必要がより多くのような音:

CREATE VIEW dbo.OrderPrice 
AS 

SELECT O.O_ID, 
     O.B_ID, 
     O.Quantity, 
     O.Quantity * B.Unit_Price Total_Price 
FROM Order O 
INNER JOIN Book B 
    ON O.B_ID = B.B_ID; 
+0

ありがとう.....! –

関連する問題