Blue
Red
Green
Orange
Voilet
Slate
Dark

纯SQL高难问题!!! 请各位赐教。 (10分)

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
有一表spj:
sno pno jno qty
s1 p1 j1 200
s1 p1 j2 400
s1 p2 j2 300
s2 p4 j5 500
... ... ... ...
sno代表供应商代码
pno代表零件代码
jno代表工程项目代码
qty代表供应数量
现需要查询至少用了供应商s1所供应的全部零件的工程号jno.
请问这样的SQL语句该如何写?谢谢各位。
 
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道是不是如下面那么简单,我都不敢相信自己! 呵呵
select * from spj where sno = 's1'
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
to kk2000:
你的答案不对呀。
select jno from spj where sno = 's1'
这返回的是供应商s1有关的所有工程项目代码。和我的意思不一样呀。
 
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
那你说清楚一点,好吗? 我糊里糊涂的
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是:查询至少用了供应商s1所供应的(全部零件)的工程号jno.
你刚才的那一句是只要涉及到供应商s1,那怕只用了一种零件也返回呀。
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
请赐教。
 
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
你写一下你要查询的结果出来看看吧! 我的理解能力好差!
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
to kk2000:
像上面给出的数据,结果应该为j2.
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
请问kk2000,搞定了吗?
 
J

jianguobu

Unregistered / Unconfirmed
GUEST, unregistred user!
晕,"(全部零件)的工程号jno"
你的 "全部零件"是在哪定义的呀???
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思就是动态让它查询出全部零件,然后根据这个再查询符合上面条件的jno.
//我原以为这个问题简单的,现在看来,它不只值10分了,顺便改标题。
 
L

ll7777

Unregistered / Unconfirmed
GUEST, unregistred user!
select pno from spj
where jno in (select jno from spj where sno='s1')
 
J

jianguobu

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,来来嘛.
看到10题我看都不看,我还真以为简单.后来看到回复了七八次还没解决.进来看一下.原来如此.
我现在来解读你的"全部零件"
我认为吧:全部零件应该是对一个产品来说的,那么你的有这个产品的BOM表.
像你上面的题,你说是j2,那我也可以认为j5也是呀,因为可以说他的全部零件就是P4呀
 

引力

Unregistered / Unconfirmed
GUEST, unregistred user!
to 117777:
你好,你的返回值是pno,并不是我要的jno,请再帮我看看。
你现在返回的是有关s1的jno所有的零件号。
 
J

jianguobu

Unregistered / Unconfirmed
GUEST, unregistred user!
晕,如果真的一定要得到j2.
对上面的数据而言也可以做出来.
select pno,jno from spj group by jno having(count(*))>1
 
T

TYZhang

Unregistered / Unconfirmed
GUEST, unregistred user!
Select Distinct jno
from spj where sno='s1' and jno not in
(select distinct jno from spj where sno<>'s1')
 
W

wendeyuan

Unregistered / Unconfirmed
GUEST, unregistred user!
这样可以吗。。
--------------------
SELECT min([jno])
FROM spj
GROUP BY [sno], [pno]
HAVING sno='s1' and count(pno)=1;
 
M

MrMengyi

Unregistered / Unconfirmed
GUEST, unregistred user!
同意jianguobu
用count其实也可以的
先算一下select count(*) from spj group by pno having sno = 'j1'
然后用jianguobu的语句,就是把最后的1替换掉
 
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to: 引力
楼上的符合你的要求没有! 符合的话我就不写了。
好象楼顶的可以,不过有点缺陷。其实楼主的要求还有点模糊.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
610
import
I
S
回复
0
查看
823
SUNSTONE的Delphi笔记
S
顶部 底部