首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求多表查询SQL一条
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 13:33:11 楼主
    四张表:
    T_Batch:BID,CID,CTID
    T_Image:BID,PICID,PIC
    T_Work1:WID,BID,PICID,FieldName,Area,InputRule,FDT
    T_Work2:WID,BID,U1Value

    条件是 1:T_Image,T_Work1,T_Work2的BID等于T_Batch的BID
          2:T_Work2.WID = T_Work1.WID
          3:T_Work1.PICID = T_Image.PICID

    以下是我写的SQL查出来有重复记录且值不对应,反正是错了。望各位指出我的错误并求正确SQL。

    select  T_Batch.CID as '客户号',T_Batch.CTID as '客户作业号',
    T_Batch.BID as '批次', T_Image.PIC as '完整图例',T_Work1.PicID as '图像编号',
    T_Work1.FieldName as '名称',T_Work1.Area as '坐标',
    T_Work1.FDT as '类型',T_Work1.InputRule as '规则',T_Work2.U1Value as '实际值' from T_batch
    inner join t_image on t_image.bid =(select T_batch.BID from T_batch
    where  CID = '00001' and  CTID = '001' )
    inner join T_Work1 on T_Work1.bid =(select T_batch.BID from T_batch
    where  CID = '00001' and  CTID = '001' )
    inner join T_Work2 on T_Work2.bid =(select T_batch.BID from T_batch
    where  CID = '00001' and  CTID = '001' )
    where CID = '00001' and  CTID = '001' and
    T_Work1.PICID = T_Image.PICID and T_Work2.WID = T_Work1.WID and T_Work1.FieldName like '%电话%'
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 13:39:301楼 得分:0
    SQL code
    select T_Batch.CID as '客户号',T_Batch.CTID as '客户作业号', T_Batch.BID as '批次', T_Image.PIC as '完整图例',T_Work1.PicID as '图像编号', T_Work1.FieldName as '名称',T_Work1.Area as '坐标', T_Work1.FDT as '类型',T_Work1.InputRule as '规则',T_Work2.U1Value as '实际值' from T_batch inner join t_image on t_image.bid =T_batch.BID inner join T_Work1 on T_Work1.bid =T_batch.BID and T_Work1.PICID = T_Image.PICID inner join T_Work2 on T_Work2.bid =T_batch.BID and T_Work2.WID = T_Work1.WID where T_batch.CID = '00001' and T_batch.CTID = '001' and T_Work1.FieldName like '%电话%'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 13:40:512楼 得分:0
    SQL code
    select a.CID as '客户号', a.CTID as '客户作业号', a.BID as '批次', b.PIC as '完整图例', c.PicID as '图像编号', c.FieldName as '名称', c.Area as '坐标', c.FDT as '类型', c.InputRule as '规则', d.U1Value as '实际值' from T_batch a join t_image b on b.BID=a.bid join T_Work1 c on c.bid=a.bid and c.PICID=b.PICID join T_Work2 d on d.bid=a.bid and d.WID=c.WID where a.CID = '00001' and a.CTID = '001' and c.FieldName like '%电话%'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 13:43:223楼 得分:0
    樓上的寫法清晰明了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 13:47:284楼 得分:0
    楼上2位和我写的没区别哦 查出来的记录都一样 FieldName和U1Value值都不是对应的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 14:00:545楼 得分:0
    楼主的要求到底是什么样的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 14:05:306楼 得分:0
    已解决 谢谢各位
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-11 14:18:187楼 得分:0
    根据你给出的条件,应该写成:
    SQL code
    select a.bid as 批次,a.cid as 客户号,a.ctid as 客户作业号,b.picid as 图像编号,b.pic as 完整图例, c.fieldname as 名称,c.area as 坐标,c.fdt as 类型,c.inputrule as 规则, d.u1value as 实际值 from t_batch a inner join t_image b on a.bid=b.bid inner join t_work1 on a.bid=c.bid inner join t_work2 on a.bid=d.bid where c.picid=b.picid and d.wid=c.wid
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved