2011-04-08 72 views
1

下面的查詢是針對數據庫的模式:http://i.stack.imgur.com/omX60.png幫助構建給出模式

的問題是:有多少人有至少五個еntitlements?

我這有,請告訴我這是多麼錯誤並修復它。

select count(personId) 
from serialNumber_tbl natural join entitlement_tbl 
group by personId 
having sum(entitlementID) > 5 

謝謝。

回答

4

至少5的條件是>= 5,不> 5
您需要在授權表來算的獨特標識,沒有人
這給你的人,然後你需要子查詢它找到的計數人。

select count(personId) 
FROM 
(
select personId 
from serialNumber_tbl natural join entitlement_tbl 
group by personId 
having count(distinct entitlement_id) >= 5 
) X 
+0

謝謝,這就是我需要的! – Donut 2011-04-13 04:12:38

1

您的請求並不完全清楚。你要求的人有五個以上權利行計數是否在多個序列號存在與否?如果是這樣,你可以這樣做:

Select Count(*) As CountOfPeople 
From Person_tbl As P 
Where Exists (
       Select 1 
       From serialNumbers As S1 
        Join entitlement_tbl As E1 
         On E1.serialNumberId = S.serialNumberId 
       Where S1.personId = P.personId 
       Having Count(*) >= 5 
       ) 

或者是你要求找到那個有五個以上資格的SERIALNUMBER多少人?如果是這種情況,那麼你可以這樣做:

Select Count(*) As CountOfPeople 
From Person_tbl As P 
Where Exists (
       Select 1 
       From serialNumbers As S1 
        Join entitlement_tbl As E1 
         On E1.serialNumberId = S.serialNumberId 
       Where S1.personId = P.personId 
       Having Count(Distinct S1.serialNumberId) >= 5 
       )