2010-08-18 5 views
0

2 개의 테이블이있는 SQL Server 2008 데이터베이스가 있습니다. 이 테이블은 다음과 같이 정의된다 :SQL의 부모 속성 값 업데이트

Device 
------ 
ID 
Name 
Description 
TotalApplications 

Application 
----------- 
ID 
Name 
DeviceID 

나는 최근에 너무 먼 길을 복용하는 쿼리를 가속화하기위한 노력의 일환으로 "TotalApplications"열을 추가했다. 장치와 관련된 응용 프로그램의 수는 자주 변경되지 않습니다. 그럴 때이를 처리 할 트리거를 작성해야합니다. 그러나 지금은 데이터베이스를 채울 필요가 있습니다.

현재 각 장치와 연결된 TotalApplications는 0입니다. 분명히 모든 장치 레코드에 대해이 값을 업데이트해야합니다. 그러나, 나는 이것을하는 방법을 알아낼 수 없습니다. 누군가 내 장치 기록에 대한 TotalApplications 값을 업데이트 할 수있는 방법을 설명해 주시겠습니까?

많은 도움을 주셔서 감사합니다.

답변

2

사용 :

UPDATE DEVICE 
    SET totalapplications = (SELECT COUNT(*) 
           FROM APPLICATION a 
          WHERE a.deviceid = DEVICE.id) 
WHERE totalapplications = 0 
1

OMG Ponies 대답은 분명이 작동 것이다, 그러나 이것은 내 DB 인 경우에 나는 열을 추가하고 트리거를 사용하고 피할 것이다. 대신 색인 생성을 사용하거나 색인이없는 색인 된보기를 사용합니다. 내가 그걸 올리면 알려줘.