加入几个表:多次指定表错误

时间:2018-01-31 13:50:23

标签: postgresql join

我试图在postgreSQL查询中加入所有表后调用数据。 我收到以下错误:

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  table name "place" specified more than once
)
Failed to execute SQL chunk

在引用类似帖子和在线资源之后,我尝试设置别名(仅创建有关不引用FROM子句中其他表的新错误),重新排序表名称(最干净) ,重新排序的块发布在下面),并尝试使用UPDATE / FROM / JOIN作为SELECT / FROM / JOIN的替代方法。但是,我认为我最终需要使用SELECT子句。

SELECT *
FROM place

INNER JOIN place ON place.key = form.key
INNER JOIN form ON form.id = items.formid
INNER JOIN items ON items.recid = rec.id
INNER JOIN rec ON rec.id = sub.recid
INNER JOIN sub ON sub.id = type.subid
INNER JOIN type ON type.name = det.typeid;

2 个答案:

答案 0 :(得分:0)

你有"放置"在你的查询中两次,这是允许的,但你必须别名第二次使用表" place"。您还引用了名为" det"的内容,但它不是查询中任何位置的表或别名。如果你只想要一个好的地方,只需删除INNER JOIN位置并将你的place.key = form.key移动到表单连接或where子句。

如果你想在其中放置表,因为你试图将表连接到自己的别名第二个,但你要确保你有一个子句来加入这两个表(可能是一个或一个在哪里)

答案 1 :(得分:0)

问题最终成为表名的顺序。下面的代码很好地加入了一切:

SELECT *
FROM place

INNER JOIN form ON place.key = form.key
INNER JOIN items ON form.id = items.formid
INNER JOIN rec ON items.recid = rec.id
INNER JOIN sub ON rec.id = sub.recid
INNER JOIN type ON sub.id = type.subid
INNER JOIN det ON type.name = det.typeid;