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

select distinct jno from spj
where pno in (select pno from spj where sno='s1')
 
觉得这个表的设计有问题,前面3个字段都可以有重复值,应该拆分为两个表.
 
to:合位大侠
  这些答案我都一一试过了,都没有达到我的要求,(虽然有些能得出j2,但这只是一个例子,下面还有数据,答案并不一定)
  这是数据库系统概论上的一个习题,题是一定错不了的,
  虽然没有得到准确的答案,但我还是谢谢你们的关心,先分分了。分分的不好,请笑纳。
  希望大家今后如想到答案的话,请Email给我:514003@163.com.
  谢谢!
 
to : 各位大侠
  经过一整天的时间,这个问题终于让我解决了。但我觉得我的方法很牵强,应该有更好的办法的。
  下面先给出我的实现办法:
  1)定义aa视图  //与供应商s1有关的所有工程码jno
create view aa
as (select distinct jno
from spj
where (sno='s1'))
2)定义bb视图  //供应商提供的所有零件码pno
create view bb
as (select distinct pno
from spj
where (sno='s1'))
  3)定义x视图  //请大家仔细看这段,我解释不清,最好自己分段试一下。
  create view x
as (select jno,count(jno) countNO//countNO为别名
from (select distinct aa.jno, bb.pno
from spj, aa, bb
where spj.jno=aa.jno and spj.pno=bb.pno)
group by jno)
  4)最终SQL操作
  select jno
from x
where countNO>=(select count(pno)
from bb)  
 
我在csdn上又有个新答案,请大家参考:
SELECT DISTINCT jno
FROM spj s1
WHERE (sno = 's1') AND (NOT EXISTS
(SELECT pno
FROM spj s2
WHERE s2.sno = 's1' AND s2.pno NOT IN
(SELECT pno
FROM spj s3
WHERE s1.jno = s3.jno)))
***感谢prcgolf(小鸟)***
 
SELECT jno
FROM TABLE5
WHERE (sno = 's1')
GROUP BY jno
HAVING (COUNT(DISTINCT pno) =
(SELECT COUNT(DISTINCT pno)
FROM table5
WHERE sno = 's1')) 
***感谢victorycyz(中海)***
 

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
顶部 底部