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

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

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵