объединить таблицы в двух разных столбцах - PullRequest
0 голосов
/ 25 октября 2018
Table 1   Bus_ID   Owner_ID   #owners in Bus
           12345       5558        3
           12345       5856        3
           52858     **7894**      1
           12345       1254        3

Table 2   Owner_1   Owner_2    Relationship
           5558      5856    Parent of Owner_1
           5558      1254    Parent of Owner_1
           1254      5856    Spouse
           5856      1254    Spouse
           **7894**  6868    Spouse
           6868    **7894**  Spouse

У меня есть две таблицы, к которым я хочу присоединиться.Присоединиться можно только на Owner_ID = Owner_1 или Owner_ID = Owner_2.Я хочу в конечном итоге получить Owner_ID, которые находятся в таблице 1 aswel.

Мои ожидаемые результаты:

Bus_ID  Owner_ID  Owner_1  Owner_2  Relationship 
 12345    5558     5558     5856   Parent of Owner_1
 12345    5558     5558     1254   Parent of Owner_1
 12345    5856     5856     1254   Spouse
 12345    1254     1254     5856   Spouse 

Как вы видите, если Owner_ID не отображается в таблице 1, я не хочу, чтобы он отображался в объединенной таблице, но при присоединении 7894 поскольку в таблице 2 есть отношения, они все равно проявятся, как я к ним присоединюсь.Мне нужна помощь в соединении этих двух таблиц.

select Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship from table 1 
join table 2 on (Owner_ID = Owner_1 AND Owner_ID = Owner_2). 

Этот запрос не даст ожидаемого результата.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете попробовать что-то вроде этого:

select 
    Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship 
from table 1 
inner join table 2 on Owner_ID = Owner_1

UNION

select 
    Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship 
from table 1 
inner join table 2 on Owner_ID = Owner_2

Таким образом, вы получите:

  • Все строки, которые соответствуют условию Owner_ID = Owner_1
  • Всестроки, соответствующие условию Owner_ID = Owner_2

, и вы вернете их все сразу.

0 голосов
/ 25 октября 2018

Попробуйте ниже использовать соединение с несколькими экземплярами таблицы2 по псевдониму

select Bus_ID, Owner_ID, t2.Owner_1, t3.Owner_2, t2.Relationship 
from table1 t1 join table2 t2 on t1.Owner_ID = t2.Owner_1 
join table2 t3 on t1.Owner_ID = t3.Owner_2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...