0

BuchBerechnete Spalte (Microsoft SQL Server 2014)

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

Bestellen

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

Wie kann ich die Total_Price durch Order.Quantity Multiplikation und Book.Unit_Price wo Order.B_ID ein FK ist Book.B_ID. Vielen Dank!

+0

Überprüfen Sie das Bild in diesem Link. Sie werden eine klare Vorstellung von Joins haben. Das wird Ihnen helfen, diese Art von Abfragen zu verstehen. http://stackoverflow.com/questions/35349303/php-compare-two-tables-and-store-result-in-thir-table/35349429#35349429 – Mytroy2050

+0

@ Mytroy2050 danke! –

Antwort

1

Sie eine Funktion erstellen kann, wo die berechnete Spalte die Funktion verwenden würden.

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

vielen Dank! –

+0

Warum bekomme ich 0,0000 für den Total_Price? Ich folgte Ihrem Code, aber ich änderte nur die erste Zeile zu: CREATE FUNCTION dbo.GetTotalPrice (@id VARCHAR (5)) –

+0

Wahrscheinlich, weil @ret null ist. Übergeben Sie die richtige ID? Versuchen Sie, die Abfrage alleine auszuführen. –

2

klingt eher wie Sie ein VIEW erstellen müssen:

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

Danke .....! –