выберите максимальное количество строк, в которых используются объединенные таблицы - PullRequest
0 голосов
/ 04 января 2019

У меня есть дерево таблиц table_1, table_2 и table_3, его структура его

table_1

enter image description here

table_2

enter image description here

table_3

enter image description here

В table_1 у меня есть unit_id и он общий,Я хочу выбрать данные во всех таблицах, например, unit_id = 5, используемый в table_2 и table_3, а строк зданий - шесть, строк участков - два, я хочу выбрать шесть строк 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   

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы действительно хотите левое соединение между всеми тремя таблицами, но, глядя на ваши примеры данных, кажется, что вам нужно соотношение между таблицами 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
0 голосов
/ 04 января 2019

Похоже, что вы хотите оставить присоединиться table_2 и table_3 до table_1.

SELECT t1.unit_id,
       t2.building_id,
       t2.area building_area,
       t3.parcel_id,
       t3.area parcel_area
       FROM table_1 t1
            LEFT JOIN table_2 t2
                      ON t2.unit_id = t1.unit_id
            LEFT JOIN table_3 t3
                      ON t3.unit_id = t1.unit_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...