2011-06-01 38 views
4

我有以下兩個表:SQL查詢 - 獨特的成果

People [*ID*, Name] 
Pet [*PetID*, OwnerID, Species, Name] 

(OWNERID是ID的外鍵)

我想數據庫列出每個人多少不同物種他們擁有自己的。例如,如果Bob(ID 1473)所擁有的狗,貓和另一條狗的輸出應該是:

ID | No. of Species 
---------------------- 
1473 | 2 

我意識到,這需要相關子查詢或外部連接,但我不能完全確定怎麼做。任何幫助,將不勝感激。

回答

1

你可以使用count(distinct ...)爲:

select People.ID 
,  count(distinct Species) 
from People 
join Pet 
on  Pet.OwnerID = People.ID 
group by 
     People.ID 
+0

* '......列出每個** **人......' * – 2011-06-01 09:17:16

+0

@Andriy男:那會是'左連接'我猜:) – Andomar 2011-06-01 10:04:36

+0

是的,這就是我的想法。但是OP似乎已經同意你的選擇。 :) – 2011-06-01 11:25:07

1

試試這個

Select ID,[No. of Species] from People 
inner join 
    (select Count(Species) as [No. of Species],OwnerID from Pet 
    group by OwnerID) d 
on Id = d.OwnerID 
+1

但是count(*)會計算寵物的數量,而不是物種的數量? – Andomar 2011-06-01 10:04:14

1
select people.name, count(distinct pet.species) 
from people, pet 
where people.id = pet.ownerid 
group by people.name