• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

sql语句不起作用,帮忙看看怎么回事。急等!

phoenix2xp 2004-08-06 04:48:20
三个表,door、jwh、history分别是户口信息、居委会信息、修改记录。其中door表中doorid的前两位为jwh表中duanid,history表中有一个字段:zdz,它是这样的格式:door.policeid|door.doorid。
现在我想从这三个表中取得door表的所有字段,并取得对应记录的jwhname(jwh表中一个字段)和czzt(history表中的一个字段),我的sql语句如下:

select door.policeid, door.doorid, jwh.jwhname, history.czzt
from door, jwh, history
where door.doorid=jwh.duanid+'%' and history.zdz=door.policeid+'|'+door.doorid

语句可以执行,但却取不到应有的值

哪位帮我看看是怎么回事,哪个地方错了!
...全文
95 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
weixy 2004-08-13
door.doorid=right(history.zdz,5) 看你的history.zdz后边是不是有空格,字段类型是不是char型。如果是要用RTRIM(history.zdz)去掉空格
回复
phoenix2xp 2004-08-09
是like,发贴的时候发错了!

按weixy()的方法,可以了!

不过,我用了left、right方法来处理history.zdz=door.policeid+'|'+door.doorid,即:
door.policeid=left(history,6) and door.doorid=right(history,5)
但right方法好像不是很正常,有部分数据取不到,不知道是什么原因。
weixy知道的话,再帮我一下好吗。谢谢先!
回复
1老玉米1 2004-08-09
door.policeid=left(history,6) and door.doorid=right(history,5)
应是door.policeid=left(history.zdz,6) and door.doorid=right(history.zdz,5)

还有history.zdz右边是否有空格;(右边有空格用:Rtrim(right(history.zdz,5)))door.policeid是否一定是6位;door.doorid是否一定是5位;
回复
lcq9732 2004-08-06
改成这个试试

select door.policeid, door.doorid, jwh.jwhname, history.czzt
from door, jwh, history
where door.doorid like jwh.duanid + '%' and history.zdz=door.policeid+'|'+door.doorid
回复
青团子 2004-08-06
door.doorid=jwh.duanid+'%'
这个是干什么的?
如果是模糊查询就要改成
door.doorid like jwh.duanid+'%'
回复
weixy 2004-08-06
select door.policeid, door.doorid, jwh.jwhname, history.czzt
from door, jwh, history
where left(door.doorid,2)=jwh.duanid and history.zdz=door.policeid+'|'+door.doorid
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-08-06 04:48
社区公告
暂无公告