Допустим, есть три таблицы:
create table t1
(
id int null,
value int null
)
create table t2
(
id int null,
value int null
)
create table t3
(
id int null,
value int null
)
И пусть они заполнены так:
t1
1 1
2 2
3 3
t2
2 1
4 2
t3
1 1
2 2
5 3
Хочу вывести объединенную таблицу, чтобы в результате получилось:
t123
id t1_value t2_value t3_value
1 1 NULL 1
2 2 1 2
3 3 NULL NULL
4 NULL 2 NULL
5 NULL NULL 3
Пишу так, выходит правильно:
select coalesce(t1.id,t2.id,t3.id) as id,t1.value as t1_value,t2.value as t2_value,t3.value as t3_value
from
t1 full outer join
t2 on t1.id=t2.id full outer join
t3 on t1.id=t3.id
Пишу по-другому, выходит неправильно:
select coalesce(t1.id,t2.id,t3.id) as id,t1.value as t1_value,t2.value as t2_value,t3.value as t3_value
from
t1 full outer join
t2 on t1.id=t2.id full outer join
t3 on t2.id=t3.id
t123
id t1_value t2_value t3_value
1 1 NULL NULL
2 2 1 2
3 3 NULL NULL
4 NULL 2 NULL
1 NULL NULL 1
5 NULL NULL 3
Почему так?
Может исходные данные и не показывают все неувязки, но объясните почему так происходит.
Как правильно объединять несколько однотипных таблиц по смыслу full outer join'а?