Соединить запрос двух таблиц с другой таблицей - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужна помощь, чтобы объединить три стола.Каким-то образом я мог бы объединить две таблицы table1 и table2, чтобы получить желаемый результат, но я хочу объединить другую таблицу, чтобы получить новые связанные столбцы.Вот мой запрос:

select 
[from_bus] as [Node], 
[from_bus_id]  as [Node_id]
from table1 
union 
select 
[to_bus] as [Node], 
[to_bus_id]  as [Node_id]
from table1
union
select 
[from_bus] as [Node], 
[from_bus_id]  as [Node_id]
from table2
union 
select 
[to_bus] as [Node], 
[to_bus_id]  as [Node_id]
from table2

Запрос вывода из таблиц1 и таблиц2:

Node Node_ID
A_22  1
A_11  2
B_33  3
C_25  4

Узел и Node_ID являются уникальными.Теперь у меня есть еще одна таблица3, из которой мне нужен еще один столбец (Zone_ref), содержащий IDs соответствующих Zone.

    table3: 
    Zone   Node_Name  Zone_ref
    A      A_22        1
    A      A_11        1
    B      B_33        3 
    B      B_44        3     
    C      C_31        4
    C      C_25        4

Я хочу получить что-то вроде:

Node Node_ID Zone_ref
A_22  1       1
A_11  2       1
B_33  3       3
C_25  4       4

Есть общие поля, где я могу присоединиться к таблице, но не знаю, как объединить один запрос из двух таблиц с третьей таблицей.Нужны ваши предложения.Кстати, я использую доступ БД.Спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

Попробуйте вложенный подзапрос с помощью Join.Как ниже:

select a.Node, a.Node_id, b.Zone_ref from (
 select 
 [from_bus] as [Node], 
 [from_bus_id]  as [Node_id]
 from table1 
 union 
 select 
 [to_bus] as [Node], 
 [to_bus_id]  as [Node_id]
 from table1
 union
 select 
 [from_bus] as [Node], 
 [from_bus_id]  as [Node_id]
 from table2
 union 
 select 
 [to_bus] as [Node], 
 [to_bus_id]  as [Node_id]
 from table2 ) a
INNER JOIN table3 b ON a.Node = b.Node_Name
...