汕头牛肉丸 2022-04-11 10:07 采纳率: 94.1%
浏览 52
已结题

oracle使用left join的查询

table1
name dw1 dw2
白菜 1 2

table2(单位字典表)
name code
斤 1
颗 2

现在我想要写查询语句,查出物品的单位1和单位2,我用left Join 通过table1的dw1 与 table2的code关联,再用left Join 通过table1的dw2 与 table2的code关联,目前我的方法是关联两次table2的表,分别取到dw1和dw2的中文名称,想问下有什么方法能一次关联都取到吗

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-04-11 16:47
    关注

    本来就是要获取两个字段,而且是提取不同行的数据,当然要关联两次,要么join,要么标量子查询

    select t.name,a.name,b.name 
    from table1 t,table2 a,table2 b
    where t.dw1=a.code and t.dw2=b.code
    

    标量子查询的上面那位已经给了。
    但是,的确是有办法只关联一次table2的,但是效率也不见得会高

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Keifei 2022-04-13 18:00
    关注

    从关系模型上看,你的维表table2包含了事实表table1的两个属性,而且这两个属性的关系并列的~~所以从数据结构上看,肯定是得单独处理的。

    评论
  • leaf_cq 2022-04-11 11:24
    关注

    SELECT name
    , ( SELECT name FROM table2 b WHERE a.dw1 = b.code ) dw1
    , ( SELECT name FROM table2 c WHERE a.dw2 = c.code ) dw2
    FROM table1;

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月8日
  • 已采纳回答 4月30日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 MATLAB中的fft问题
  • ¥30 哈夫曼编码译码器打印树形项目
  • ¥20 求完整顺利登陆QQ邮箱的python代码
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?