多个联接导致sql语句未正确结束
我的问题是:多个联接导致sql语句未正确结束,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我的问题是: select p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount from (person p1 full outer join owns o1 on p1.driver_id = o1.driver_id) and (Participated part full outer join ol on part.license = o1.license) 我得到sql语
select p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
from
(person p1 full outer join owns o1 on p1.driver_id = o1.driver_id) and
(Participated part full outer join ol on part.license = o1.license)
我得到sql语句未正确结束的错误。我只是想在解决一个更复杂问题的过程中建立这个表。这不是在
FROM
部分定义关系的方式。请尝试以下操作:
select p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
from
person p1
full outer join owns o1 on p1.driver_id = o1.driver_id
full outer join Participated part on part.license = o1.license;
注:
- 在中的
表单上的之后,您可以列出一些关系(逗号分隔),关系也可以是…
完整外部联接b
- 您还可以将这些链接(如果愿意,可以使用括号)链接为
- 您不能使用
来连接关系,关系仅用于连接条件和
- 可以将语句括起来形成子查询,例如
但是请注意,您需要在开始时使用(SELECT * FROM a FULL OUTER JOIN b ON ...) AS t
将其转换为关系,并且在大多数系统中,您需要在后面使用别名(SELECT*
)t
FROM
子句),因为它已被正式弃用,并且很难正确执行某些类型的联接(通常,外部
联接…)@Clockwork Muse同意,如果一个JOIN
操作符描述了您需要什么,那么它总是比隐式操作符更清晰。更好的语法可能是使用(driver_id)连接完全外部连接将为您提供拥有
或参与
有行的结果,但个人
没有。考虑到我怀疑您的数据实际上是这样的,您可能真的需要一个常规的内部联接
(除了左联接
到参与
)。你想报道什么?
(SELECT * FROM a FULL OUTER JOIN b ON ...) AS t
SELECT p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
FROM person p1
FULL OUTER JOIN owns o1
ON p1.driver_id = o1.driver_id
FULL OUTER JOIN Participated part
ON part.license = o1.license