2015-12-01 21 views
0

我有PostgreSQL的兩個表:如何在更改的列上連接兩個表?

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

所有列integer。我要加入他們在非標加入,這意味着如果ida2不爲空則連接是on (ida2=idb2)如果它是空連接是on (ida=idb)

我需要在一個視圖中使用它,所以我不能用IF statment 。 我想用​​3210的,但它只能選擇1個整數2.

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

我該怎麼辦呢?

+2

像'上聚結加入B(a.ida2,a.ida)= COALESCE(b.idb2,b.idb)' –

+0

@a_horse_with_no_name用什麼情況下,如果ida2是null和idb2不是null?他們將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