Sql server - dodanie kolumny o wartościach wyliczonych z innej tabeli

0

Witam, borykam się z dość trywialnym problemem. Mianowicie mam bazę danych w sql server management studio:

Tabela Produkt:
ID | Nazwa | Cena

Tworzę tabelę TabelaWymiarów:

ProduktId|....|Ilosc|Wartosc

Chce zdefiniować Wartosc(Column Properties - patrz zdjęcie w załączniku) jako pole wyliczone równe:
Ilosc * Cena produktu ( którą muszę wyciągnąć z tabeli Produkt szukając po ProduktId).
Zatem w polu Computed Column - Formula wpisałem:

([Ilosc] * [SELECT * FROM Produkt WHERE Id=ProduktId]      ) 

ale to mi nie przechodzi(błąd składni), przekopałem też stack overflow itp. wciąż pozostając bez odpowiedzi na to trywialnie wydaje się zagadnienie.
Prosze o pomoc

0

samo wyrażenie formuly jest niepoprawne nie mozesz w podzapytaniu zwracać wszystkich kolumn tylko cena:

([Ilosc] * [SELECT cena FROM Produkt WHERE Id=ProduktId]      ) 

To jednak nie rozwiąże problemu, bo podzapytanie nie jest dozwolone w wyliczeniowej kolumnie, musisz zrobić to przy pomocy funkcji scalarnej:

CREATE FUNCTION dbo.CalculateProductTotal (@ilosc INT, @productID INT)
RETURNS MONEY
BEGIN
  DECLARE @result AS MONEY 
  SELECT  @result = 
            @ilosc*cenat
  FROM    
          Produkt 
  WHERE 
        Id=@ProductId
  RETURN @result
END;
GO

No i formuła

dbo.CalculateProductTotal(ilosc,productid)
0

a gdzie tą funkcję mam zapisać?
tzn gdzie wpisać jej "definicję?"

0

w managment studio kliknij new query...

0

error validating the formula for column Wartosc

  1. kliknąłem prawym PPM na bazę -> new query, wklepałem:
CREATE FUNCTION dbo.CalculateProductTotal (@ilosc INT, @productID INT)
RETURNS MONEY
BEGIN
  DECLARE @RESULT AS MONEY 
  SELECT  @RESULT = 
            @ilosc*Cena
  FROM    
          Produkt 
  WHERE 
        Id=@ProductId
  RETURN @RESULT
END;
GO

Wybrałem Execute - poszło sucess

Potem w formula wkleiłem to : dbo.CalculateProductTotal(ilosc,productid)

0

a kolumna w formule nie powinna być przez k:

dbo.CalculateProductTotal(ilosc,produktid)

1 użytkowników online, w tym zalogowanych: 0, gości: 1