1
所以,我有2個表:選擇數查詢或計算列
分類表
Analit int
PositionInMenu int
項目表
Analit int
CategoryAn int
所以,我有大約50個類別和2000件物品。我需要考慮它包括的物品的每個類別數量。
1)SELECT *, (SELECT COUNT(Analit) FROM Item_table t2 WHERE t2.CategoryAn = t1.Analit) as tCount FROM Categories_table t1 ORDER BY PositionInMenu
2)添加到類別表計算列與函數調用:
([dbo].[Categories_GetItemsCountInCategory]([Analit]))
和功能的代碼:
CREATE FUNCTION dbo.Categories_GetItemsCountInCategory
(
@categoryId int = null
)
RETURNS int
AS
BEGIN
RETURN (SELECT COUNT(Analit)
FROM Items
WHERE CategoryAn = @categoryId)
END
,然後我可以簡單地採取加列的值到我的查詢:
SELECT *
FROM Categories_table
ORDER BY PositionInMenu
所以,問題。什麼對我更好?
的OP是在暗示計算列(配備了UDF) – Andomar
@Andomar - 這將不會被允許作爲持久化計算列和非堅持我的回答仍然適用。這就像在查詢中直接引用UDF一樣。 –
好,很好。但是,我使用LINQ和它生成SQL查詢,並不總是很乾淨。我的項目中有太多的LINQ,現在很難重新編寫乾淨的SQL查詢中的每個函數。 Mb後來,thx。 – FSou1