如何解决left join 被关联表不能带条件的问题

xiaoloveai 2012-09-28 05:59:58
在做sap的时候 需要从多表抓取数据,遇到如下问题 :
从A (a1 a2 a3) 抓取数据 left join B(b1 b2 b3) 其中 a1字段要在 b1 b2这两个数据之间
select a1 a2 a3 b1 b2 b3 from a left b on a2 = b3 ( and a1>b1 and a1<b1) 后面的条件不能和b有关系了 怎么解决呢

要是分两次查询 在循环中判断 a 可能有十来万条数据 b中可能也会上万 速度受不了 做完这个国庆才能放假啊 悲催啊 高手过来解救吧


...全文
569 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
leech125 2012-09-29
  • 打赏
  • 举报
回复
select a.a1,a.a2,a.a3,b.b1,b.b2,b.b3 from a left join b on a.a2 = b.b3 where a.a1>b.b1 and a.a1<b.b2
fw0124 2012-09-29
  • 打赏
  • 举报
回复
你是sybase数据库么?oracle里面这样是可以的。
如果是sybase到sybase版块去问吧。
xiaoloveai 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

改成where不行吗?
select a1,a2,a3,b1,b2,b3 from a left join b on a2 = b3 where a1>b1 and a1<b2;
[/Quote] 换成where 也是不可以的 在where中是不能带B的条件的
fw0124 2012-09-29
  • 打赏
  • 举报
回复
改成where不行吗?
select a1,a2,a3,b1,b2,b3 from a left join b on a2 = b3 where a1>b1 and a1<b2;
xiaoloveai 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SQL code

--后面的条件你指的什么,单按这个是可以的,为什么不可以
--不过有一点:b的条件不要放到where中,不然就失去左连接的意义了
select a1,a2,a3,b1,b2,b3 from a left join b on a2 = b3 and (a1>b1 and a1<b2);
[/Quote] 本机也没装数据库 也不能去测试 纯SQL 可不可以 可是在SAP 中这样是不行的 在连接中只能用 = eq
要是纯SQL语句可以的话 请告诉我一下也算是个小收获
人生无悔 2012-09-28
  • 打赏
  • 举报
回复

--后面的条件你指的什么,单按这个是可以的,为什么不可以
--不过有一点:b的条件不要放到where中,不然就失去左连接的意义了
select a1,a2,a3,b1,b2,b3 from a left join b on a2 = b3 and (a1>b1 and a1<b2);

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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