Левое внешнее соединение

 
0
 
Oracle
ava
DEER | 02.05.2006, 11:15
Добрый день. Пусть есть две таблицы
Table1:
- id1
- name1
- Table2ID
Table2:
- id2
- name2

Нужно сделать выборку, чтобы вместо Table2ID выводилось name2. При этом поле Table2ID может быть не заполнено (в этом случае выводить ""). Те получается следующий запрос:
SELECT t1.id1, t1.name1, t2.name2
FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1.Table2ID = t2.id


но в 8'ом Oracle нет поддержки соединений.... как быть?
попробовал вот так
select t1.id
, t1.name
, decode(t1.Table2ID, NULL, '', t2.id) t2_name
from table1 t1, table2 t2
where (t1.Table2ID = t2.id or t1.Table2ID IS NULL)


но он выводит записи, для которых не заданно поле Table2ID по несколько раз.

как быть?
Comments (8)
ava
DEER | 02.05.2006, 16:35 #
сделал так
select DISTINCT 
t1.id
, t1.name
, decode(t1.Table2ID, NULL, '', t2.id) t2_name
from table1 t1, table2 t2
where (t1.Table2ID = t2.id or t1.Table2ID IS NULL)

Остается вопрос на сколько это правильно??
ava
bas | 02.05.2006, 16:51 #
Left Join
ava
LSD | 02.05.2006, 22:12 #
select t1.id, t1.name, t2.name2
from table1 t1, table2 t2
where t1.table2id = t2.id
union
select t1.id, t1.name, ''
from table1 t1
where t1.table2id is null


P.S. А ты уверен, что нет join-ов?
Просто у меня сейчас нет доки по 8-му ораклу под рукой. Там у них просто был особый синтаксис для join-ов: (+), проверь.
ava
DEER | 03.05.2006, 08:58 #
да с UNION тоже работает правильно.

А вот слово JOIN я в книжках по 8му ораклу не нашел ;-) у меня тут 4 книги и во всех написано что соединять надо через условие.
ava
LSD | 04.05.2006, 23:14 #
А вот так не сработает?
select T1.ID1, T1.NAME1, T2.NAME2
from TABLE1 T1, TABLE2 T2
where T1.TABLE2ID = T2.ID(+)
ava
jsa | 05.05.2006, 04:59 #

select a.id1, a.name1, (select b.name2 from Table2 b where b.id2 = a.Table2ID)
from Table1 a
ava
DEER | 05.05.2006, 09:59 #
Цитата (LSD @ 4.5.2006, 23:14)
А вот так не сработает?

select T1.ID1, T1.NAME1, T2.NAME2

from TABLE1 T1, TABLE2 T2

where T1.TABLE2ID = T2.ID(+)

клёва.
Это оказывается и есть правое и левое соединение smile

Это я только щас узнал
ava
LSD | 05.05.2006, 22:46 #
Цитата (DEER @ 5.5.2006, 10:59 findReferencedText)
клёва.

Это оказывается и есть правое и левое соединение

Именно это я имел в виду когда писал:
Цитата (LSD @ 2.5.2006, 23:12 findReferencedText)
Там у них просто был особый синтаксис для join-ов: (+), проверь.

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  bas ava  LSD   DEER   jsa
Similar
advanced
Submit