2016-12-04 4 views
2

내가 오라클 데이터베이스에서 다음 문을 실행하는 것을 시도하고있다 : 어떤 이유오라클 SQL 유효하지 않은 식별자 오류

select nfl_player.first_name, nfl_player.last_name 
from nfl_player 
where player_id IN 
    (select nfl_player.player_id as pid 
     from nfl_player 
     where pid=nfl_team_roster.player_id 
     and nfl_team_roster.team_id= 4 
    ); 

을 나는 그것을 실행할 때, 나는 다음과 같은 메시지가 얻을 :

and nfl_team_roster.team_id= 4 
    * 
ERROR at line 7: 
ORA-00904: "NFL_TEAM_ROSTER"."TEAM_ID": invalid identifier 

I을 두 번 확인하고 내 구문이 맞다. (적어도 나는 그렇게 믿는다.) 열이 있습니다. 아래 표에 해당 스키마를 포함 시켰습니다. 이 오류를 내게주는 것은 무엇입니까?

CREATE TABLE NBA_Team_Roster(
roster_ID number primary key, 
team_id number, 
player_id number unique, 
foreign key (team_id) references NBA_Team(team_id), 
foreign key (player_id) references NBA_Player(player_id) 
); 

모든 도움을 주시면 감사하겠습니다.

+0

테이블 이름이 ** NBA ** _ Team_Roster 또는 "** nfl ** _ team_roster"입니까? – Gerrat

+0

당신은 두 번'... from nfl_player ... '를 가지고 있지만 테이블 이름은 **'NBA_Team_Roster' **입니다. – FDavidov

답변

0

nfl_team_roster 테이블은 사용자 쿼리에 사용되지 않습니다. 나는 당신이 쿼리가 더 읽기하게 열을 참조하기 위해 전체 테이블 이름의

SELECT first_name, 
     last_name 
FROM nfl_player nf 
WHERE player_id IN (SELECT ntr.player_id AS pid 
        FROM NBA_Team_Roster ntr --Here 
        WHERE nf.pid = ntr.player_id 
          AND ntr.team_id = 4); 

사용 Alias 이름 대신 하위 쿼리에서 테이블 이름을 잘못 생각합니다.

+0

나는 다음 문장에서 같은 줄을 따라 무엇인가하려고 노력하고있다. 그러나 이번에는 오직'마지막'과'절에 관해서 만 잘못된 식별자 오류가 발생한다. 체크 - 'nfl_player, nfl_team_roster, nfl_game \t \t nfl_player.player_id = nfl_team_roster.player_id \t \t 및 nfl_team_roster.team_id = nfl_game.team_id \t \t 및 nfl_game.start_time = 700' – Sal

+0

@Sal에서 nfl_player.player_id 를 선택 지금 .. 테이블 이름은'nfl_team_roster'가 아닌'NBA_Team_Roster'이어야합니다. –

+0

실수했습니다. NFL이 아니어야 스키마에 NBA가 있어야합니다. 미안합니다. 원래 문제와 관련하여 모두 해결되었습니다. 위에서 방금 게시 한 댓글을 보았습니까? – Sal

0

작성한 하위 쿼리에 오류가 있습니다. 하위 쿼리에 테이블 이름을 잘못 배치하고 조인 조건에서 별칭 이름을 사용했습니다.

select np.first_name, np.last_name 
from nfl_player np 
where np.player_id IN 
    (select r.player_id as pid 
     from NBA_Team_Roster r 
     where r.team_id= 4);