2014-09-18 4 views
0

sqldeveloper에서 쿼리를 실행할 때 "% s : 유효하지 않은 식별자" 오류가 발생합니다. 기본적으로 표 1의 두 열을 연결하여 표 2의 한 열과 비교하려고합니다. 두 테이블은 서로 다른 두 데이터베이스의 테이블입니다. 어떤 이유로 t1_Name 별칭이 마음에 들지 않습니다.ORA-00904 : 유효하지 않은 식별자 00904 00000 - "% s : 유효하지 않은 식별자"

select t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.* 
from table1 t1, table2 t2 
where t1.t1_Name = t2.Account_name; 

나는이 문제를 어떻게 해결할 수 있는지에 대한 의견을 보내 주시면 감사하겠습니다.

답변

4

WHERE 절에있는 SELECT 쿼리 목록에 정의 된 별칭을 사용할 수 없습니다. 논리적으로는 WHERE 절이 먼저 처리되므로 별칭이 아직 존재하지 않습니다.

당신은 계산

select t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.* 
    from table1 t1, table2 t2 
where t1.First_name ||' '|| t1.Last_Name = t2.Account_name; 

를 복제해야하는 것 중 하나 또는 당신이 두 개의 테이블이 다른 데이터베이스에있는 경우

select t1.t1_name, t2.* 
    from (select t1.First_name ||' '|| t1.Last_Name as t1_Name 
      from table1 t1) t1 
     join table2 t2 
     on(t1.t1_name = t2.account_name) 
0

이 당신이 가진 인라인 뷰의 별명을 정의해야합니다 데이터베이스 링크를 사용합니다. table1이 데이터베이스 db1에 있고 table2가 db2라는 데이터베이스에 있다고 가정합니다.

SELECT t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.* 
    FROM table1 t1, [email protected] t2 WHERE t1.t1_Name = t2.Account_name; 

더 자세한 정보는 여기를 찾을 수 있습니다 : 당신은 하위를 사용할 수 있습니다 http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm

0

선택 :

select * 
    from (select t1.First_name ||' '|| t1.Last_Name t1_Name, t2.* 
     from table1 t1, table2 t2) 
where t1_Name = Account_name; 

귀하의 질문처럼 보일 것입니다 (당신이 DB1에 쿼리를 실행 가정) this Fiddle을 확인하십시오.

관련 문제