0

計算列(微軟的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  |  ?  | 

我怎樣才能乘以Order.QuantityBook.Unit_Price其中Order.B_ID是一個FK得到TOTAL_PRICEBook.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爲空。你傳遞了正確的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

謝謝..... –