2015-03-30 111 views
0

我想向表中添加一列,該表的值將計算在另一個表上重複的次數。事情是這樣的:向sql表添加計數器

Name NameID Quantity | NameID Franchisee Business BusinessID 

John 12345  2  | 12345 CA   Laundry 45678 
Smith 45684  1  | 12345 CA   Bakery 45679 
          | 45684 NY   Shampoo 45680 

列數量是一個我想補充,我想它來計算所有屬於他的填充NameID的BusinessID:約翰有12345 NameID的和填充NameID有2個BusinessIDs的產生密切相關,以它。

我不知道如何做到這一點,我想將這個值添加到一個aspx項目,也許它會更容易做一個函數在C#中保持數據庫的狀態,只是顯示值客戶。

+2

保留它在數據庫內部。請參閱http://stackoverflow.com/questions/13488822/create-computed-column-using-data-from-another-table瞭解如何執行此操作。 – DeanOC 2015-03-30 22:47:52

+1

提示:使用合適的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。 – HABO 2015-03-31 00:09:13

回答

2

一般而言,您不應該存儲該值。如果你這樣做了,每次更改第二張表時都必須更新它,然後你會遇到類似問題,如果第二張表的更新成功,但第一張表的更新失敗了,我該怎麼辦? (回答:使用交易)。

在飛行中計算該值更簡單。您可以在SQL做到這一點:

SELECT 
    t1.Name, t1.NameID, COUNT(*) AS Quantity 
FROM 
    Table1 t1 
     INNER JOIN Table2 t2 ON t1.NameID = t2.NameID 
GROUP BY 
    t1.Name, t1.NameID 

存儲這將是,如果該值是一個昂貴的計算的唯一原因(在這種情況下,它不是)。

+1

只需要添加,如果您真的需要,您可以將此查詢作爲Microsoft Sql Server中的「視圖」公開,假設您使用的是DBMS。它的行爲類似於具有有限能力的表,具體取決於它如何配置。 – 2015-03-30 23:07:44