【发布时间】:2011-12-27 13:35:56
【问题描述】:
我想将三张桌子合并在一起。
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 语句,但它们似乎都不起作用。
关于如何解决这个问题的任何想法?
谢谢。
【问题讨论】:
-
正如Erwin在原题目中所说,left()函数只存在于postgres >= 9.x。请改用 substr()。
-
好的。非常感谢。您之前的解决方案确实有效。它现在返回我需要进行比较的所有必需行。
-
您介意解释一下您的解决方案是如何工作的吗?谢谢。
标签: sql postgresql join primary-key