2013-12-08 33 views
0

也許這個問題是重複的或我在谷歌的查詢是不正確的,但我有一個問題) 我有一個3表: 1.聯繫人(int ID,nvarchar名稱) 2.市(INT ID,nvarchar的名稱,INT ContCount) 3 ADRESS(INT ID,INT CityID,詮釋的ContactID,INT年)插入到表字段結果的SQL查詢

ContCount場 - 它的一些聯繫人什麼是生活中的一些城市(City.Name)。我的查詢: SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1

這是我的問題:我需要我的ContCount字段分配此查詢的結果。你可以幫我嗎?我該怎麼做?

P.S.對不起,我的英語=)

+0

你們是不是要'update'了'ContCount'在所有城市城市桌?或者,你是否想爲特定的「City_ID」使用'ContCount'? – Shiva

+0

在Adress表中更新,插入等應該更新所有城市的動態 –

回答

1

如果您使用T-SQL,您可以使用下面的代碼保存變量:

DECLARE @ContCount as INT 
SET @ContCount = (SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1) 

林不太清楚你下一步想做什麼,但你可以用它您接下來要寫的任何查詢,例如:

DECLARE @ContCount as INT 
SET @ContCount = (SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1) 
UPDATE City SET [email protected] Where ID=1 
+0

非常感謝。我使用了這樣的代碼: UPDATE DBO.Cities SET ContactCount =(SELECT COUNT(*)FROM dbo.Adresses WHERE dbo.Adresses.City_ID = dbo.Cities.ID) –

0

或者您可以合併爲一個語句。我從來沒有使用CROSS在UPDATE語句適用,但它應該工作:

UPDATE c SET ContCount = b.AddressCount 
FROM dbo.City c 
CROSS APPLY (SELECT COUNT(1) as AddressCount 
      FROM dbo.Address a 
      WHERE a.City_ID = c.City_ID) b 

(可選:WHERE c.City_ID = 1