weixin_38647584 2022-11-22 14:20 采纳率: 69.2%
浏览 9
已结题

Oracle数据库查询语句交集并集问题

数据查询语句,有AB两张价格表,比方A是订单价格,B是进货价,两表的结构如下, A表:物品id ,供应商id, 订单价格 其他字段,B表:物品id ,供应商id, 进货价,首先确定一条数据唯一性是物品id和供应商id,两表一样,目前的情况是A表10W多数据,B表有20万条数据,两张表可能且一定会有同样物品id和供应商id的数据,要做个查询
A表和B表如何做关联,如A表有两个商品,1.足球,物品ID是A001,供应商G001,订单价格100,1.排球,物品ID是A004,供应商G004,订单价格120,然后B表有3条数据, 足球商品,物品ID是A001,供应商G001,进货价格50, 羽毛球商品,物品ID是A002,供应商G002,进货价格10 , 乒乓球商品,物品ID是A003,供应商G003,进货价格5
期望的结果,关键点,A表和B表的物品ID和供应商ID内容一样,但是字段命名不同,A表字段:物品ID是 “goods_id”,供应商ID是"supplier_id",B表商品id是“material_id” ,供应商ID"provider_id"
且两张表字段数量也不一样,是完全无关的两张表,只有物品id和供应商id的内容存在相同的关系

img

这个关联条件物品id和供应商,且他们是各自都是单独存在的,没有主表从表一说
希望得到大家的帮助,用的数据库是Oracle,这个关联sql怎么写才能达到我要的这样的效果,希望大家指点指点
  • 写回答

2条回答 默认 最新

  • Check_Const 2022-11-22 16:00
    关注

    可以尝试用全连接 FULL join (FULL OUTER JOIN)

    -- SQL Server 测试 (Oracle语法大部分类似)
    select
    case when A.物品名称 is not null then A.物品名称 else B.物品名称 end 物品名称,
    case when A.goods_id is not null then A.goods_id else B.material_id end 物品ID,
    case when A.supplier_id is not null then A.supplier_id else B.provider_id end 供应商ID,
    A.订单价格,B.进货价格
    from
    (
       select '足球' as 物品名称,'A001' as goods_id,'G001' as supplier_id,100 as 订单价格
       union all
       select '排球' as 物品名称,'A004' as goods_id,'G004' as  supplier_id,120 as 订单价格
    ) as A
    Full join
    (
       select '足球' as 物品名称,'A001' as material_id,'G001' as provider_id,50 as 进货价格
       union all
       select '羽毛球' as 物品名称,'A002' as material_id,'G002' as provider_id,10 as 进货价格
       union all
       select '乒乓球' as 物品名称,'A003' as material_id,'G003' as provider_id,5 as 进货价格
    ) B
    on A.goods_id=B.material_id and A.supplier_id=B.provider_id
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 修改了问题 11月22日
  • 修改了问题 11月22日
  • 展开全部

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧