StackTc
2018-01-25 03:06
采纳率: 61.9%
浏览 1.5k

oracle主表2个字段动态关联从表问题

动态使用主表中2个字段关联从表达 objid

表A(主) ida,idb,type
表B(从) id,email

实际场景入下:
现在表A有2个字段ida,idb,他们分别关联表B的id,相当于一个发信。
如果type = 1,那么就使用ida关联表B查询到B的信息发送给B,
如果type = 2,那么就使用idb关联表B查询到B的信息发送给B。

本人谢了一段理想化的sql如下:

select decode(type,'1',a.ida,'2',a.idb,'默认') xxid ,a.*,b.* from a
left join b on a.xxid=b.objid

想法是根据type动态生成一个id去关联从表的id,但是执行失败。
有没有小伙伴能解决这个问题? 查询结果需要2个表的所有字段

select decode(type,'1',a.ida,'2',a.idb,'默认') xxid ,a.*,b.* from a
left join b on a.xxid=b.objid and a.type = 1
left join b on a.xxid=b.objid and a.type = 2
这种sql就不用写了,感觉太冗余。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • sinat_41641294 2018-01-25 03:18
    已采纳

    不谢

     select a,*,b.* from a,b where decode(a.type,'1',a.ida,'2',a.idb,'默认') = b.objid(+);
    
    点赞 打赏 评论