我试图在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;
答案 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;