postgresql:连接2条select语句时出现连接语法错误

postgresql:连接2条select语句时出现连接语法错误,sql,postgresql,join,syntax,Sql,Postgresql,Join,Syntax,我正在从clinicaltrials.gov查询aact数据库。数据库模型就在这里:。我选择了两种模式(ctgov、项目cdek、标准组织)。我正在尝试连接两个select语句编辑:我现在已经尝试为我的子查询添加别名,但仍然没有效果。我得到以下错误: (SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, ctgov.studies.phase FROM ctgov.sponsors, ctgov.studie

我正在从clinicaltrials.gov查询aact数据库。数据库模型就在这里:。我选择了两种模式(ctgov、项目cdek、标准组织)。我正在尝试连接两个select语句编辑:我现在已经尝试为我的子查询添加别名,但仍然没有效果。我得到以下错误:

(SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, ctgov.studies.phase
FROM ctgov.sponsors, ctgov.studies
WHERE ctgov.sponsors.nct_id=ctgov.studies.nct_id) A

FULL [OUTER] JOIN


(SELECT proj_cdek_standard_orgs.cdek_synonyms.id, proj_cdek_standard_orgs.cdek_synonyms.name
FROM proj_cdek_standard_orgs.cdek_synonyms) B

ON

A.name = B.name;
我可以独立完成这两个select语句,但我尝试了该查询,得到以下错误:

ERROR:t1第7行或附近的语法错误:)t1


我做错了什么?如何使用联接而不出现语法错误?

必须为子查询提供别名。另外,您不应该像在第一个子查询中那样使用隐式联接,而应该始终尝试使用显式联接

SELECT 
    *
FROM
(
  SELECT 
    ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, ctgov.studies.phase
  FROM ctgov.sponsors
  JOIN ctgov.studies
  ON ctgov.sponsors.nct_id=ctgov.studies.nct_id
) t1

FULL JOIN


(
  SELECT 
    proj_cdek_standard_orgs.cdek_synonyms.id, proj_cdek_standard_orgs.cdek_synonyms.name
  FROM proj_cdek_standard_orgs.cdek_synonyms
) t2

ON

t1.name = t2.name;

请使用下面的查询

SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, 
    ctgov.studies.phase, proj_cdek_standard_orgs.cdek_synonyms.id, 
    proj_cdek_standard_orgs.cdek_synonyms.name
FROM ctgov.sponsors, ctgov.studies, proj_cdek_standard_orgs.cdek_synonyms
WHERE ctgov.sponsors.nct_id=ctgov.studies.nct_id
and proj_cdek_standard_orgs.cdek_synonyms.name = ctgov.sponsors.name;
但正确的方法是使用传统连接

SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, 
    ctgov.studies.phase, proj_cdek_standard_orgs.cdek_synonyms.id, 
    proj_cdek_standard_orgs.cdek_synonyms.name
FROM ctgov.sponsors
INNER JOIN ctgov.studies
ON (ctgov.sponsors.nct_id=ctgov.studies.nct_id)
INNER  JOIN proj_cdek_standard_orgs.cdek_synonyms
ON (proj_cdek_standard_orgs.cdek_synonyms.name = ctgov.sponsors.name);

您可以根据需要将其更改为“左”或“完全外部联接”。

请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。暂停总体目标的工作,在第一个表达中删去代码,不要给出你的期望,说出你的期望以及为什么。请。从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。PS Re“我如何使用连接而不出现语法错误”不要要求我们(重新)编写另一个SQL演示文稿,请说明为什么您认为它可以根据权威演示文稿工作,以便我们可以解决您的误解/误读。每个帖子问1个问题(具体问题不重复)。