数据库练习题

来源:互联网 发布:排骨教主 知乎 编辑:程序博客网 时间:2024/06/05 06:00
snopnojnos1p1j1s1p1j3s1p1j4s1p2j2s2p3j1s2p3j2s2p3j4s2p3j5s2p5j1s2p5j2s3p1j1s3p3j1s4p5j1s5p6j2s5p6j4

以上是spj表。

sno是供应商号,pno是零件号,jno是项目号,spj这个表内容是供应情况,每个供应商供应多种零件(都在此表中体现),每种零件可由多个供应商提供(都在此表中体现),每个项目使用多种零件(都在此表中体现)。

 

查询:至少使用了供应商s5所供应全部零件的项目号。

要求用一句查询写出,当然可以用嵌套查询,也可以用EXCEPT等等。

想了半天也想不出,后来到CSDN上去求助,才得到如下答案。

select jno
from spj
where sno='s5'
group by jno
having count(distinct pno)=(
select count(distinct pno)
from spj
where sno='s5'
)

初看此应答不以为然,心想这题跟count有什么关系,又复习了一会儿后,猛然一激灵……对阿,对这题来说这种方法才是适用而且简单的查询

后有感叹,不写查询已久矣……全才难做啊

原创粉丝点击