2016-06-08 3 views
-1

Heres мой вопрос ....SQL-Outer Join?

  • 'USER' схема имеет 2 таблицы, в которых хранятся данные: ABC_DAT и ABC_SAT. Они связаны столбцом ABC_DAT_ID.

  • В таблице ABC_DAT (source_up_id и sink_up_id) также связана с таблицей USER.BID (up_id).

  • Напишите запрос, который возвращает все данные в таблице ABC_DAT, плюс IP_NAME для source_up_id и sink_up_id.

Я думаю, что мне потребуется внешнее соединение. Я немного новичок в SQL, поэтому я пытаюсь понять это. Может быть, я полностью выключен и даже не нуждаюсь в внешнем соединении. Херес, что у меня есть до сих пор:

select * from USER.ABC_DAT p 
outer join USER.BID l 
on p.IP_NAME=l.IP_NAME 

Но теперь я не уверен, куда идти. Как я уже сказал, это может быть далеко.

+0

Добавить таблицу данных таблицы и ожидаемый результат. – jarlh

+1

Это либо 'left join', либо' left external join' –

ответ

0

для этого можно использовать «левое внешнее соединение».

select * from USER.ABC_DAT p 
left outer join USER.BID l 
on p.IP_NAME=l.IP_NAME 

Этот запрос содержит таблицу ABC_DAT в качестве левой таблицы. Таким образом, он возвращает все значения из таблицы ABC_DAT с соответствующими значениями из таблицы BID.

0

На основе описаний в вопросе:

select 
ad.*, 
-- as.*, 
usource.IP_NAME as user_source_ip_name, 
usink.IP_NAME as user_sink_ip_name 
from user.ABC_DAT ad 
--inner join user.ABC_SAT as on (ad.abc_dat_id = as.abc_dat_id) 
left join user.BID usource on (ad.source_up_id = usource.up_id) 
left join user.BID usink on (ad.sink_up_id = usink.up_id) 
order by ad.abc_dat_id; 

Обратите внимание, что присоединиться к ABC_SAT закомментированое.
Поскольку кажется, что информация из этой второй таблицы не нужна.