请教SQL问题,求交集?帮帮忙(100分)

  • 主题发起人 主题发起人 gz_wh
  • 开始时间 开始时间
G

gz_wh

Unregistered / Unconfirmed
GUEST, unregistred user!
有集合A(1,2,3), B(2,3,4), C(3,4,5)存在表 T1, T2

T1 T2
------------ -------------
T2ID ¦ VAL ID ¦ NAME
------------ -------------
1 ¦ 1 1 ¦ A
1 ¦ 2 2 ¦ B
1 ¦ 3 3 ¦ C
2 ¦ 2
2 ¦ 3
2 ¦ 4
3 ¦ 3
3 ¦ 4
3 ¦ 5
怎样用SQL语句写出任意指定多个集合的交集。
例如: A,B的交集?
A,B,C的交集?






 
有集合A(1,2,3), B(2,3,4), C(3,4,5)存在表 T1, T2

T1 T2
------------ -------------
T2ID VAL ID NAME
------------ -------------
1 1 1 A
1 2 2 B
1 3 3 C
2 2
2 3
2 4
3 3
3 4
3 5
怎样用SQL语句写出任意指定多个集合的交集。
例如: A,B的交集?
A,B,C的交集?

请大侠们帮帮忙
 
A,B的交集?
select t1.value
from t1,t2
where t1.t2id=t2.id
and (t2.val='A' or t2.name='B')
group by t1.val
having count(t1.val)>1
A,B,C的交集?
select t1.value
from t1,t2
where t1.t2id=t2.id
and (t2.val='A' or t2.name='B' or t2.name='c')
group by t1.val
having count(t1.val)>2
求其他时修改where和having的数目即可.
 
to wind_cloudy:
我在一个比较复杂的数据集里做过实验,好象得出的结果不对呀。
 
把你的数据集导成文本发给我试一试(不会太大吧!?)email:wind_cloudy@sina.com
 
我在CSDN里找到了答案了,谢谢各位关心

CSDN中pxq(pengxq)大侠:
这种方法的前提是:
每一个集合中没有重复的值。
原理:
如果是三个集合的交集,这个值重复三次。如果是四个集合的交集,这个值重复四次。
select val from (select val, count(val) as s from T1 where ID In ( select ID from T2 where Name In ('A','B','C') ) group by val ) t where t.s > = 3
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
573
import
I
I
回复
0
查看
666
import
I
后退
顶部