将另一个select子句添加到多连接的Oracle查询中

时间:2014-10-28 23:48:50

标签: sql oracle join

我有一个当前有效的查询,定义为:

SELECT LIST_OF_SITES.SITE,
  TO_CHAR(SITE_VISIT.DATE_ - LIST_OF_ISLANDS.TIMEZONE/24, 'DD-MON-YY HH24:MI') DATE_,
  LIST_OF_SITES.LATITUDE,
  LIST_OF_SITES.LONGITUDE,
  LIST_OF_SITES.REEF_ZONE,
  LIST_OF_SITES.DEPTH_BIN
  FROM GISDAT.LIST_OF_SITES
LEFT JOIN GISDAT.SITE_VISIT
ON LIST_OF_SITES.SITE = SITE_VISIT.SITE
INNER JOIN GISDAT.LIST_OF_ISLANDS
ON LIST_OF_ISLANDS.ISLAND = LIST_OF_SITES.ISLAND WHERE LIST_OF_SITES.SITE = 'TUT-229';

我要添加的是另一个选择SITE_VISIT.HABITAT_CODE的select子句但是 如果我在LIST_OF_SITES.DEPTH_BIN之后立即添加它,则会产生错误:

ORA-00904: "SITE_VISIT"."HABITAT_CODE": invalid identifier.  

其他一些可能有用的信息是我可以访问所有提到的表格, 并且还有一个名为LIST_OF_HABITATS的表格,其中包含HABITAT_CODE列,我不确定是否需要以某种方式与SITE_VISIT.HABITAT_COD E联接才能使其正常工作。

1 个答案:

答案 0 :(得分:0)

SELECT LIST_OF_SITES.SITE,
  TO_CHAR(SITE_VISIT.DATE_ - LIST_OF_ISLANDS.TIMEZONE/24, 'DD-MON-YY HH24:MI') DATE_,
  LIST_OF_SITES.LATITUDE,
  LIST_OF_SITES.LONGITUDE,
  LIST_OF_SITES.REEF_ZONE,
  LIST_OF_SITES.DEPTH_BIN, -- added a comma here
 SITE_VISIT.HABITAT_CODE -- added habitat_code
  FROM GISDAT.LIST_OF_SITES
LEFT JOIN GISDAT.SITE_VISIT
ON LIST_OF_SITES.SITE = SITE_VISIT.SITE
INNER JOIN GISDAT.LIST_OF_ISLANDS
ON LIST_OF_ISLANDS.ISLAND = LIST_OF_SITES.ISLAND
 WHERE LIST_OF_SITES.SITE = 'TUT-229';

如果仍然出现ORA-00904 invalid identifier错误,请确保SITE_VISIT没有HABITAT_CODE列。

在这种情况下,您需要加入适当的表,并投影该表的列。