首页 > 解决方案 > 选择连接表使用的最大行数 最大行差异 其他

问题描述

我有一个树表 table_1、table_2 和 table_3,它的结构是

表格1

在此处输入图像描述

表_2

在此处输入图像描述

表3

在此处输入图像描述

在table_1中我有一个unit_id,它是通用的,我想选择所有表中的数据,例如table_2和table_3中使用的unit_id = 5,建筑物行是六,包裹行是两,我想选择六行building_id,building_area在两行 parcel_id 和 parcel_area 旁边,对于 unit_id = 6 相反,4 排地块和两排建筑物,当 unit_id = 7 时为一排建筑物,当 unit_id = 8 时为一排地块

select result example 


unit_id      building_id    building_area    parcel_id     parcel_area
   5            2                20             15             20
   5            3                10            null           null
   5            4                30            null           null
   5            5                15             16             10
   5            7                25            null           null
   5            8                15            null           null
   6           null             null            21             30 
   6           null             null            22             50
   6            9                18             23             80
   6            10               20             24             70
   7            30               10            null           null  
   8           null             null            27             52   

标签: sqloracle

解决方案


您确实需要所有三个表之间的左连接,但是通过查看您的示例数据,您似乎需要表 2 和表 3 之间的关系来包含该区域。

那将是:

SELECT 
    t1.unit_id,
    t2.building_id,
    t2.area AS building_area,
    t3.parcel_id,
    t3.area AS parcel_area
FROM 
    table_1 AS t1
    LEFT JOIN table_2 AS t2
        ON  t2.unit_id = t1.unit_id
    LEFT JOIN table_3 AS t3
        ON  t3.unit_id = t1.unit_id
        AND t3.area = t2.area

推荐阅读