2015-12-01 2 views
0

У меня есть две таблицы в PostgreSQL:Как присоединиться к двум таблицам с измененными столбцами?

A (ida, ida2) 
B (idb, idb2) 

все столбцы являются integer. Мне нужно, чтобы присоединиться к ним в нестандартности присоединиться, а это означает, что если ida2 не равно нулю, то соединение является on (ida2=idb2), если это нуль объединение является on (ida=idb)

мне нужно использовать его в целях, так что я не могу использовать IF Постулаты , Я думал использовать coalesce, но он может выбрать только 1 целое число, не 2.

CREATE OR REPLACE VIEW myview AS 
SELECT ..... 
    FROM A 
    join B on .....? ; 

Как я могу это сделать?

+2

Что-то вроде 'Объединение б на COALESCE (a.ida2, a.ida) = COALESCE (b.idb2, b.idb)' –

+0

@a_horse_with_no_name Что с делом, если ida2 является null и idb2 не равно нулю? Они сравнивают ida с idb2. –

ответ

1

Использование UNION

CREATE OR REPLACE VIEW myview AS 
SELECT ..... 
    FROM A 
    join B on ida2 is not null and ida2 = idb2 
UNION 
SELECT ..... 
    FROM A 
    join B on ida2 is null and ida = idb 
Смежные вопросы