問題已更新自動完成SQL領域:
比方說,我有兩個表:
表1
ID_Ticket | Ticket_Quantity | Total_Price(Calculated field) -------------------------------------------- 2 | 5 | x 1 | 3 | y
表2
ID_Ticket | Ticket_Price ------------------------ 1 | 4.5 2 | 5
我想防止數據庫的用戶填寫Total_Price字段(通過編輯Top 200行或查詢),而不是我想要它計算爲Ticket_Price * Ticket_Quantity並自動插入該行。
在這種情況下,x應爲25和ÿ應該是13.5(一旦Ticket_Quantity和票價:TICKET_PRICE填充該行的值應該被自動insterted)
我寫這樣的功能:
CREATE FUNCTION Multiply(@x DECIMAL(19,4), @y DECIMAL (19,4)) RETURNS DECIMAL(19,4) AS BEGIN SELECT @x * Ticket_Price FROM Table2 WHERE ID_Ticket = @y END
但有一個錯誤:ALTER TABLE Purchases ADD Total_Price AS Multiply(Table2.Ticket_Price,Ticket_Quantity);
釷:包含一個函數內無法數據返回給客戶端
此外,當我想基於功能添加計算字段
Select語句e詢問不執行並給我出現此錯誤:
無法綁定多部分標識符「Product.Prod_Price」。
我該如何調用Table2的值並修復Multiply函數?如何基於同一行字段
0
A
回答
0
我找到了解決辦法,所以我將它張貼誰擁有了同樣的問題未來的讀者:
在對象資源管理器(左圖)去這個路徑:
Databases --> <your_database_name> --> programmability --> functions
上單擊鼠標右鍵在功能文件夾並選擇New --> Scalar-valued function
粘貼下面的函數腳本(更換<變量>與那些符合您的數據庫):
CREATE FUNCTION dbo.Multiply(@id INT, @price DECIMAL(19,4))
--or (@x float, @y money) depending on the type of your columns you have
RETURNS DECIMAL(19,4)
--RETURNS <data_type_of_the_calculated_column_you_want>
AS
BEGIN
RETURN
(SELECT @price * Ticket_Price
--SELECT @<second_argument/column_name_of_Table1>*<column_name_of_Table2>
FROM Table2
--FROM <your_Table2_name>
WHERE ID_Ticket = @id)
--WHERE <unique/PrimaryKey_Column_to_identify_the_row_in_Table2>
-- = @<ForeignKey_Column_to_identify_the_row_in_Table2>
END
並執行它。
現在創建一個新的查詢(按Ctrl + N)在Table1
添加計算列,並複製粘貼以下查詢:
ALTER TABLE Table1
--ALTER TABLE <your_Table1_name>
ADD Total_Price AS dbo.Multiply(ID_Ticket,Ticket_Quantity);
--ADD <name_of_the_calculated_row_you_like> AS
-- dbo.<Function_Name>(<id_column_name_of_Table2>,<column_name_from_Table1>)
執行查詢。
現在計算的列應該是表1和表2的列的乘積
相關問題
- 1. 不同的行 - 基於兩個字段
- 2. SQL - 你如何聚合基於另一個字段的字段
- 3. 如何基於另一個字段初始化字段?
- 4. 如何填充基於另一個字段的字段
- 5. 如何基於前一字段中的選擇填充字段?
- 6. 更新字段基於另一行的字段值
- 7. 基於字段
- 8. 如何隱藏字段在同一行中的字段它依賴於
- 9. SQL:基於1個字段的不同
- 10. 基於不同字段的Ruby驗證
- 11. 訪問 - 更新字段基於同一記錄的另一個字段
- 12. Django - 如何創建基於同一模型中的另一個字段的字段
- 13. 基於不同字段的Oracle序列字段遞增
- 14. 如何基於密鑰同步一段代碼?
- 15. MySQL的:基於字段數行命名
- 16. 基於字段對ArrayList進行排序?
- 17. 基於字段值的mysql更新行
- 18. 選擇基於字段值多行
- 19. 基於另一個表字段求和一個表字段
- 20. 如何創建基於其他字段進行評估的Django模型字段?
- 21. 刪除基於不同字段搜索結果的一個字段
- 22. 基於同一模型中其他字段的REST django字段驗證器
- 23. 如何獲得基於一個字段從核心數據不同的結果
- 24. 如何基於同一表中的anoter行進行更新?
- 25. VIM每行替換在同一行基於另一個字一個字
- 26. 訂購基於字段指向同一個表的查詢
- 27. 如何從MSSQL基於其他兩個字段的值返回一個字段
- 28. 追加字符串VARCHAR2字段基於另一字段
- 29. 預言 - 基於非唯一字段
- 30. 基於一個字段的計算器
使用存儲過程在您的數據庫中插入記錄不要發佈您的表。決不。使用只讀視圖發佈信息。 – McNets
使其成爲計算的字段。 –
@McNets我的道歉。對於用戶,我的意思是數據庫管理員(誰可以使用數據庫並對其進行修改) – noviceprogrammer