StackTc 2018-01-25 03:06 采纳率: 90.9%
浏览 1548
已采纳

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(+);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?