在 oracle 中执行 select 时标识符无效
invalid identifier when executing select in oracle
我正在尝试在使用 3 个表的 oracle 中执行 select,nba_player、nba_team 和 nba_team_roster。 nba_player 包含带有 player_id 的球员数据,nba_team 包含带有 team_id 的球队信息。 nba_team_roster 是一个关联实体,包括一个player_id 和team_id 来关联两者。我希望此查询 return 团队中每个球员的名字和姓氏 'OKC' 但由于某种原因,它给了我下面的错误。我不确定为什么这不能正确执行。任何帮助将不胜感激。
select nba_player.first_name, nba_player.last_name
from nba_player,nba_team
join nba_team_roster
on nba_team_roster.player_id=nba_player.player_id
where nba_team_roster.team_id= nba_team.team_id
and nba_team.team_name='OKC';
on nba_player.player_id=nba_team_roster.player_id
*
ERROR at line 4:
ORA-00904: "NBA_PLAYER"."PLAYER_ID": invalid identifier
CREATE TABLE NBA_Team(
team_id number primary key,
team_name varchar(5)
);
CREATE TABLE NBA_Player(
player_id number primary key,
first_name varchar(10),
last_name varchar (11),
position varchar(3),
salary number,
points_per_game number
);
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)
);
简单规则:永远不要在FROM
子句中使用逗号。 始终 使用正确、明确的 JOIN
语法。这将解决您的问题并使查询更容易理解:
select p.first_name, p.last_name
from nba_player p join
nba_team_roster r
on r.player_id = p.player_id join
nba_team t
on r.team_id = t.team_id
where t.team_name = 'OKC';
请注意,我还引入了 table 别名。这些使查询更易于编写和阅读。
我正在尝试在使用 3 个表的 oracle 中执行 select,nba_player、nba_team 和 nba_team_roster。 nba_player 包含带有 player_id 的球员数据,nba_team 包含带有 team_id 的球队信息。 nba_team_roster 是一个关联实体,包括一个player_id 和team_id 来关联两者。我希望此查询 return 团队中每个球员的名字和姓氏 'OKC' 但由于某种原因,它给了我下面的错误。我不确定为什么这不能正确执行。任何帮助将不胜感激。
select nba_player.first_name, nba_player.last_name
from nba_player,nba_team
join nba_team_roster
on nba_team_roster.player_id=nba_player.player_id
where nba_team_roster.team_id= nba_team.team_id
and nba_team.team_name='OKC';
on nba_player.player_id=nba_team_roster.player_id
*
ERROR at line 4:
ORA-00904: "NBA_PLAYER"."PLAYER_ID": invalid identifier
CREATE TABLE NBA_Team(
team_id number primary key,
team_name varchar(5)
);
CREATE TABLE NBA_Player(
player_id number primary key,
first_name varchar(10),
last_name varchar (11),
position varchar(3),
salary number,
points_per_game number
);
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)
);
简单规则:永远不要在FROM
子句中使用逗号。 始终 使用正确、明确的 JOIN
语法。这将解决您的问题并使查询更容易理解:
select p.first_name, p.last_name
from nba_player p join
nba_team_roster r
on r.player_id = p.player_id join
nba_team t
on r.team_id = t.team_id
where t.team_name = 'OKC';
请注意,我还引入了 table 别名。这些使查询更易于编写和阅读。