首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拥有至少10只狗的人?

拥有至少10只狗的人?
EN

Stack Overflow用户
提问于 2014-02-14 18:40:23
回答 5查看 69关注 0票数 0

我有以下表格:

代码语言:javascript
复制
 person( sin, name, address)
 owner(dogowner_id, dog_id, is_primary_owner_of_dog)
 dog( dog_no, breed_id )
 dog_breed( breed_id, breed )

你如何去寻找所有的人谁是主要(主要的所有者)至少10个黄色实验室?我对此感到非常困惑,我会非常感激的。

编辑:请不要嵌套查询和聚合!

EN

回答 5

Stack Overflow用户

发布于 2014-02-14 18:42:50

一种方法是利用IN表上的person

代码语言:javascript
复制
SELECT * FROM person
WHERE sin IN (
    SELECT dogowner_id FROM owner o
        JOIN dog d ON o.dog_id = d.dog_no
        JOIN dog_breed b ON b.breed_id = d.breed_id
    WHERE is_primary_owner_of_dog AND
        b.breed = 'Yellow Lab'
    GROUP BY dogowner_id
    HAVING COUNT(dogowner_id) >= 10
)

内部查询将确定“主所有者”至少拥有10条狗,然后外部查询将返回相应的person记录。

票数 2
EN

Stack Overflow用户

发布于 2014-02-14 18:41:57

代码语言:javascript
复制
select count(*), dogowner
from owner 
  inner join dog on dog.dog_no = owner.dog_id
  inner join dob_breed on dog.breed_id = dog_breed.breed_id
where dog_breed.breed = 'Yellow Lab'
group by dogowner
having count(*) >=10
票数 0
EN

Stack Overflow用户

发布于 2014-02-14 18:44:23

你用joingroup by来做这件事

代码语言:javascript
复制
select dogowner, count(*) as numyellowlabs
from owner o
     dog d
     on o.dog_id = d.dog_no join
     dog_breed db 
     on d.breed_id = db.breed_id
where breed = 'Yellow Lab'
group by dogowner
having count(*) >=10;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21787082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档