2011-12-27 37 views
0

我有三張表,我想聯合在一起。加入三個表,其中一個沒有主鍵

Domain table 
-domainid - Primary key 

DomainRegion table 
-domainid - Don't have a Primary Key or Foreign Key 
-dombegin 
-domend 

DynDomrun table 
-ddid - Primary Key 
-confid1 
-confid2 

「domain.domainid」, 「domainregion.domainid」 和 「dyndomrun.ddid」 具有相同的類型的數據類型, 「字符改變」。

現在,問題是「domain.domainid」和「domainregion.domainid」中有兩個額外的字符,我似乎無法與「dyndomrun.ddid」進行連接。

但是,「domainid」與「ddid」有關,只是「domainregion.domainid」未分配主鍵或外鍵,我需要該表中的某些字段與其他字段聯合。最後,我需要一個列表「dyndomrun.ddid,domainregion.dombegin,domainregion.domend,dyndomrun.confid1,dyndomrun.confid2」的完整表格。

我一直在使用where ("domain.domainid",8)=left("dyndomrun.ddid",8)嘗試,它給了我一個錯誤,說明

ERROR: function left(character varying, integer) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.

我已經嘗試使用聯接和其它SQL語句,他們似乎都沒有工作。

有關如何解決此問題的任何想法?

謝謝。

+0

作爲歐文原來的​​話題中稱,只有左()函數對於postgres> = 9.x.使用substr()代替。 – wildplasser 2011-12-27 13:39:39

+0

可能重複[如何連接兩個表,其中一個沒有主鍵和不同的字符長度](http://stackoverflow.com/questions/8636956/how-to-join-two-tables-with他們的一個 - 沒有一個主鍵和不是該山姆) – 2011-12-27 13:50:56

+0

好的。非常感謝你。你之前的解決方案確實奏效現在它返回我需要進行比較所需的所有行。 – Jeiman 2011-12-27 13:55:46

回答

1

除了我回答的here之外,您還需要閱讀syntax of identifiers in PostgreSQL

此:

"domain.domainid" 

將不得不

"domain"."domainid" 

或者更好的是,簡單地說:

domain.domainid 
+0

謝謝歐文。至於你之前發佈在我的文章中的解決方案,你介意給我解釋一下,因爲我是SQL的初學者。再次感謝你。 – Jeiman 2011-12-27 14:00:34

相關問題