これはかなり重い非正規化ですが、カウントを取得する関数を作成し、その関数を計算列の一部として使用できます。参照:別のテーブルを参照する計算列を定義する
だからあなたはしたいでしょう:
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
計算列の詳細については、こちらを参照してください。