[MS SQL 2005] Full outer join трех таблиц
От: symantis  
Дата: 31.01.10 12:55
Оценка:
Допустим, есть три таблицы:
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'а?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.