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

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

哪位帮我看看是怎么回事,哪个地方错了!
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧