SQL语句请教
碰到一个奇怪的问题:
SQL Server 6.5,用下列语句查询
select * from
( select * from tb1
union
select * from tb2) tt
where
((生产人1='123') or (生产人2='123'))
返回的结果集却是tb1和tb2的并,即全部纪录,包括生产人1生产人2
都不是123的记录。
如果where子句改为
where
(生产人1='123')
就可以返回如期结果,即生产人为123的结果。请问这是怎么回事?
3x //bow
问题点数:50、回复次数:13Top
1 楼leimin(黄山光明顶)回复于 2003-08-02 13:05:31 得分 0
TRY:
select * from
( select * from tb1
union
select * from tb2) tt
where
(TB1.生产人1='123') or (TB2.生产人2='123')
Top
2 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-02 13:09:56 得分 0
select * from
( select * from tb1
union
select * from tb2) tt
where
(TB1.生产人1='123') or (TB2.生产人2='123')
应该没有问题的,你检查一下,你的语句是只要有一个为123就满足你的条件了.Top
3 楼txlicenhe(马可)回复于 2003-08-02 13:39:45 得分 0
select * from
( select * from tb1
union
select * from tb2) tt
where
'123' in (TB1.生产人1,TB2.生产人2)
Top
4 楼dirace()回复于 2003-08-02 14:10:24 得分 0
可是tb1和tb2都有生产人1和生产人2这两个字段。这两个表是结构相同(才能union)记录不同的表。该句子的意思是试图选出有生产人“123” 参与的记录,即对某产品(某条记录)而言,“123”这个人要么生产了前半段(作为生产人1),要么生产了后半段(作为生产人2)
表格式如下:
生产人1 生产人2 日期 检验员
123 456 03-7-1 001
john tom 03-7-1 001Top
5 楼caiyunxia(夏才云)回复于 2003-08-02 14:19:49 得分 0
没问题Top
6 楼qianguob(不懂编程)回复于 2003-08-02 14:24:43 得分 0
select * from
tbl1 a ,tbl2 b where (a.生产1='123' or a.生产2='123')
and (b.生产1='123' or b.生产2='123')
不知道这样是否可以,
还是不太明白你的意思,你是不是就是想要生产人为123 的记录啊。
Top
7 楼dirace()回复于 2003-08-02 14:27:17 得分 0
caiyunxia你是说语句没有问题吗?可是我为什么在SQL Server 6.5上运行出上述的问题呢?Top
8 楼txlicenhe(马可)回复于 2003-08-02 14:32:21 得分 30
Select * from tb11 where '123' in (生产人1,生产人2)
union
Select * from tb12 where '123' in (生产人1,生产人2)
or
Select * from tb11 where 生产人1='123' or 生产2='123'
union
Select * from tb12 where 生产人1='123' or 生产人2='123'
Top
9 楼sdhdy(大江东去...)回复于 2003-08-02 14:32:50 得分 20
try;
select * from tb1 where 生产人1='123' or 生产人2='123'
union
select * from tb2 where 生产人1='123' or 生产人2='123'
Top
10 楼dirace()回复于 2003-08-02 14:45:54 得分 0
我尝试一下吧。在SQL Server2000中就没有上述所说的问题。奇怪的很。Top
11 楼eastpond(东塘)回复于 2003-08-02 14:50:42 得分 0
同意楼上Top
12 楼dirace()回复于 2003-08-02 15:10:12 得分 0
干脆这样吧,我把要做的问题描述出来,各路高手来指点:
表结构如下
生产人1 产量1 生产人2 产量2 ......
201 0.2 203 0.4 ......
204 0.3 201 0.5 ......
201 0.2 204 0.6 ......
要求将生产人“201”的产量累加起来,不论他是以生产人1的身份,还是以生产人2的身份参与的。两张表里面都有记录。
我初始的想法是先把涉及某个生产人的记录选出来,就是第一贴说到的union,再做相应的累加。现在直接向各位请教吧。谢谢了。Top




