2012-03-12 74 views
0

因此,也許數據框架從一開始就有缺陷,但是..我需要在兩個表上進行連接,但是我需要基於2列的連接來完成它。 。基於連接選擇的外部連接

例如,表中的一個

title | key 
-------+------- 
foo | Bar1 

表中的兩個

subcat | pt1 | pt2 
--------+-----+----- 
kitty | Bar | 1 

我基本上需要使用pt1 + pt2合併爲外鍵。

這在很大程度上是學術性的,因爲我可以向數據集添加一列(不是我的原始創建),這是串聯,但是,我想知道是否可行。

的Postgres版本8.4.8

cheers.bo

回答

1

連接條件可以是非常任何表達;特別是你可以包含字符串連接:

select ... 
from t1 left outer join t2 on t1.key = t2.pt1 || t2.pt2 
where ... 
+0

't2.pt1 || t2.pt2' wouldnt匹配「酒吧」或「1」? – roberthuttinger 2012-03-12 20:15:31

+3

@roberthuttinger:不,「||」是標準的SQL字符串連接運算符,不是邏輯或:http://www.postgresql.org/docs/current/interactive/functions-string.html#FUNCTIONS-STRING- SQL – 2012-03-12 20:18:06

+0

:: ptf ::呃,這似乎是最乾淨的方法,謝謝! – roberthuttinger 2012-03-12 20:29:46

1

你總是可以創建一個子查詢並執行連接靠輔助查詢:

SELECT t1.foo, t1.key, t3.subcat FROM table1 
JOIN (SELECT t2.pt1 || t2.pt2 AS ptjoined, t2.subcat 
     FROM tabletwo AS t2) as t3 
ON t3.ptjoined = t1.key 
+0

我正在考慮這些方面......串聯更直接。謝謝! – roberthuttinger 2012-03-13 13:14:51