xiaotuziyibalang 2023-11-18 11:49 采纳率: 40%
浏览 6
已结题

Oracle 特殊关联多表查询

img

例如上表a,b:表a有4个字段,表b有5个字段。
通过表a的id、名称、产地、供应商等字段关联表b可以获取对应的价格。
但有个特殊情况,表b的供应商并不是每行都有维护,如果说表b供应商没有维护时,就忽略供应商,如果有维护则需要加上供应商。

获取数据时存在2种情况:
情况1:表b维护了供应商
那么通过id、名称、产地、供应商,获取表b的价格:表a的id101苹果产地广东供应商A的价格为5元。

情况2:表b没有维护供应商
那么通过id、名称、产地,可以获取表b的价格:
表a的id102西瓜产地河南的价格为6元。
表a的id103桃子产地山东的价格为7元。

请问如何写 一段Oracle SQL 实现以上2种情况的关联查询?
更新了一下:id不是主键,不能通过id直接关联

  • 写回答

6条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-18 12:16
    关注
    
    SELECT a.id, a.名称, a.产品地, a.供应商, COALESCE(b.价格, 0) AS 价格
    FROM 表a a
    LEFT JOIN b b
    ON a.id = b.id
    AND a.名称 = b.名称
    AND a.产品地 = b.产品地
    AND (b.供应商 IS NULL OR a.供应商 = b.供应商);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 修改了问题 11月18日
  • 修改了问题 11月18日
  • 展开全部