2015-01-31 3 views
0

IT 지원 관리 데이터베이스를 개발 중입니다. 다음 SQL 조회는 두 개의 표를 포함합니다. 'devices'테이블은 회사가 소유 한 모든 PC를 포함하고 'services'테이블은 장치에서 수행되는 모든 서비스 목록입니다 (즉, 각 장치는 여러 서비스를 가질 수 있습니다).계산 된 열이있는 SQL 'SELECT'문

나는이 쿼리는 entire 'devices' table를 검색하고 싶지만, 각 device에 대한 servicestotal 수를 표시 여분의 열을 포함한다.

다음 문장은 아마도 정확하지 않을 수도 있습니다. 모든 행에 대해 각 장치에 그룹화/필터링하지 않고 'services' 테이블에있는 총 레코드 수 (즉, 각 행의 동일한 수)를 반환합니다.

SELECT *, 
     (SELECT Count(services.id) 
     FROM dbo.services 
       LEFT JOIN devices 
         ON services.assetID = devices.assetID 
     GROUP BY devices.assetID) AS TotalServices 
FROM dbo.devices 

이것을 달성하기 위해 어떤 접근 방법을 사용해야합니까? 모든 안내 또는 도움에 미리 감사드립니다!

답변

1

모든 행을 devices 표로 표시하려면 의 왼쪽에 dbo.devices이 있어야합니다.

를 제거하고 Left outer join으로 만들고 assetID 당 서비스 수를 계산합니다. 이 시도.

SELECT devices.assetID, 
     TotalServices=Count(services.id) 
FROM dbo.devices 
     LEFT JOIN dbo.services 
       ON services.assetID = devices.assetID 
GROUP BY devices.assetID 
+0

완벽! 정확히 내가 필요로했던 것입니까? 그건 완벽하게 이해가됩니다. 신속한 회신 해 주셔서 감사합니다. 정말로 감사드립니다. – tpag26

+0

@ tpag26 - 다행이 당신을 도왔습니다. –