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

3duebb1j  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(488)

我正在clinicaltrials.gov上查询aact数据库。数据库模型就在这里:https://aact.ctti-clinicaltrials.org/schema. 我有两个我正在选择的模式(ctgov,proj\u cdek\u standard\u orgs)。我想加入两个select语句。编辑:我现在已经试过给我的子查询取别名,但是仍然没有效果。我得到以下错误:

  1. (SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, ctgov.studies.phase
  2. FROM ctgov.sponsors, ctgov.studies
  3. WHERE ctgov.sponsors.nct_id=ctgov.studies.nct_id) A
  4. FULL [OUTER] JOIN
  5. (SELECT proj_cdek_standard_orgs.cdek_synonyms.id, proj_cdek_standard_orgs.cdek_synonyms.name
  6. FROM proj_cdek_standard_orgs.cdek_synonyms) B
  7. ON
  8. A.name = B.name;

我自己可以很好地处理这两个select语句,但是我尝试了查询,却得到了以下错误: ERROR: syntax error at or near "t1" LINE 7: ) t1 我做错了什么?如何使用联接而不出现语法错误?

unhi4e5o

unhi4e5o1#

请使用下面的查询,

  1. SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id,
  2. ctgov.studies.phase, proj_cdek_standard_orgs.cdek_synonyms.id,
  3. proj_cdek_standard_orgs.cdek_synonyms.name
  4. FROM ctgov.sponsors, ctgov.studies, proj_cdek_standard_orgs.cdek_synonyms
  5. WHERE ctgov.sponsors.nct_id=ctgov.studies.nct_id
  6. and proj_cdek_standard_orgs.cdek_synonyms.name = ctgov.sponsors.name;

但正确的方法是使用传统连接,

  1. SELECT ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id,
  2. ctgov.studies.phase, proj_cdek_standard_orgs.cdek_synonyms.id,
  3. proj_cdek_standard_orgs.cdek_synonyms.name
  4. FROM ctgov.sponsors
  5. INNER JOIN ctgov.studies
  6. ON (ctgov.sponsors.nct_id=ctgov.studies.nct_id)
  7. INNER JOIN proj_cdek_standard_orgs.cdek_synonyms
  8. ON (proj_cdek_standard_orgs.cdek_synonyms.name = ctgov.sponsors.name);

您可以根据您的要求更改为左或全外接。

展开查看全部
acruukt9

acruukt92#

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

  1. SELECT
  2. *
  3. FROM
  4. (
  5. SELECT
  6. ctgov.sponsors.name, ctgov.sponsors.nct_id, ctgov.sponsors.id, ctgov.studies.phase
  7. FROM ctgov.sponsors
  8. JOIN ctgov.studies
  9. ON ctgov.sponsors.nct_id=ctgov.studies.nct_id
  10. ) t1
  11. FULL JOIN
  12. (
  13. SELECT
  14. proj_cdek_standard_orgs.cdek_synonyms.id, proj_cdek_standard_orgs.cdek_synonyms.name
  15. FROM proj_cdek_standard_orgs.cdek_synonyms
  16. ) t2
  17. ON
  18. t1.name = t2.name;
展开查看全部

相关问题