会SQL的朋友请都来看看(100分)

  • 主题发起人 主题发起人 W1979
  • 开始时间 开始时间
W

W1979

Unregistered / Unconfirmed
GUEST, unregistred user!
有表a01:
code name
-----------------------

表a04:
code date
----------------------

有两个sql 语句:
select a04.date from a04
where a04.code like '045881'
结果为:99-12-30


select a01.code from a01
where a01.name like 'w1979'
结果为045881

a01,a04两个表 都有code字段,我把两句组合起来:
select
a04.date
from
a04
where
a04.code like (select a01.code from a01 where a01.name
like 'w1979')

结果却查不到东西,请问我错在哪里?
 
declare
@code char(5)

select @code=code from a01 where name like 'w1979'

select date from a04 where code=@code
 
to LeeChange:
你用的是什么SQL,我怎么没见过?
 
不会吧!
SQL Server
 
select
a04.date
from
a04,a01
where
a04.code like (select a01.code from a01,a04 where a01.name
like 'w1979')

test???
 
to liuchuanbo:
不行, SQL EXPLORER死掉了

(在from中加一个无关的表比如
select db1.name from db1,db2
就出问题)

我对SQL有点模糊
 
LeeChange用的是DataBase system SQL
我看你的数据类型是不是一致的?
 
你在用SQL Explorer呀,将我的SQL中@换成:
 
怎么也玩不转
我在ACCESS和Interbase中都试了,
access说'期待SELECT,DELETE,INSERT...'
Interbase不认昌号
我的那个句子理论上好象没问题,为什么。。。
 
select
a04.date
from
a04, a01
where
a01.name like 'w1979'
and a04.code like a01.code
 
select a04.datefrom a04where
a04.code in (select a01.code from a01 where a01.name like 'w1979')
 
试试看:

select datefrom a04
where code in
(select code from a01 where name like 'w1979')

 
我在SQL Server上你的SQL没问题
除非你认为的'045881'的值不相等
即可能'045881'<>'045881 '
 
如果急着用的话先用两个query
 
只指出你的error:
...like 后 应跟表达式,而不能是子查询
 
xWolf是对的。但恐怕要加入Order by XXX
 
感谢各位的热心回答,在下无以为报,先给各位三鞠躬

原来问题出在-----
我的这个SQL实际很复杂,连接了七八个表,放在interbase服务器
的存储过程中,因为是用and连结的,所以有一个表的字段不全,就
查不出来,我在建库时粗心大意,有一个字段为空,而我测试时恰好
用的这个字段!
在此现身说法,希望大家吸取我的教训........
 
我说呢,怎么在我这里试就行。原来如彼。
 
多人接受答案了。
 

Similar threads

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