我有两个表,Person
和Hobby
,有一对多关系。
| ID | Person | | ID | PersonID | Hobby |
|----|--------| |----|----------|------------|
| 1 | Bob | | 1 | 1 | Skiing |
| 2 | Mike | | 2 | 2 | Biking |
| 3 | Frank | | 3 | 3 | Skiing |
| 4 | 1 | Numerology |
| 5 | 2 | Witchcraft |
| 6 | 3 | Stamps |
我想制作一张表,其中包括每个喜欢滑雪或邮票的人的单一计数。 像这样:
| Person | Count |
|--------|-------|
| Bob | 1 |
| Frank | 1 |
有效的SQL查询是什么样的?
答案 0 :(得分:1)
select p.person, count(p.id) as cnt
from person p join hobby h
on h.personid = p.id
where h.hobby = 'Skiing'
group by p.person
您必须加入表格并group by
人员ID。
答案 1 :(得分:0)
这解决了它。你需要计算不同的
SELECT p.person, count(Distinct p.id) as Count
FROM person p join hobby h
ON h.personID = p.ID
WHERE h.hobby = 'Skiing'
OR h.hobby = 'Stamps'
GROUP BY p.ID