2013-03-24 78 views
0

所以我發現自己需要在我的表中有一個字段,它是另一個表中所有「商店」的計數。因此該表應由Centre_Name,Location和Shop_Count組成。我已經創建了表格,那麼如何添加這樣的字段?SQL Server Express中的動態字段

在另一個表中添加或刪除商店時,該字段也應明顯更新。另外,每個商店都有相應的Centre_Name。

該表位於SQL Server Express數據庫中,鏈接到Visual Studio中的MVC 4項目。

謝謝!

回答

2

這非常嚴重的非規範化,但你可以做一個函數來獲得計數,然後使用該函數作爲計算列的一部分。請參閱:define a computed column reference another table

所以你想做的事:

CREATE FUNCTION dbo.CountShops (@Centre_Name VARCHAR[x]) 
RETURNS INT 
AS BEGIN 
    DECLARE @ShopCount INT 

    SELECT @ShopCount = COUNT(*) FROM dbo.Shops WHERE Centre_Name = @Centre_Name 

    RETURN @ShopCount 
END 

然後調用這個作爲你列的一部分:

ALTER TABLE dbo.Shops 
ADD Shop_Count AS dbo.CountShops(Centre_Name) 

...這是假設Centre_Name是定義屬性你計算商店的數量。你算什麼商店?如果它只是在商店表計數行,你可以刪除該參數,並做到:

CREATE FUNCTION dbo.CountShops() 
    RETURNS INT 
    AS BEGIN 
     DECLARE @ShopCount INT 

     SELECT @ShopCount = COUNT(*) FROM dbo.Shops 

     RETURN @ShopCount 
    END 

更多關於計算列here

+0

我覺得做這件事真的很糟糕,但我需要將centre_name和shop_count結合在一起,創建一個名爲list的名稱的html組合框,並將每個名稱與shop count作爲賦值。 – 2013-03-24 21:23:57

+0

你可以編輯來清理你的模式嗎?我不確定我是否正確地遵循它。你的餐桌是什麼樣的? – antinescience 2013-03-24 21:38:40