Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在oracle中执行select时,标识符无效_Sql_Oracle_Select_Join_Sqlplus - Fatal编程技术网

Sql 在oracle中执行select时,标识符无效

Sql 在oracle中执行select时,标识符无效,sql,oracle,select,join,sqlplus,Sql,Oracle,Select,Join,Sqlplus,我试图在oracle中执行一个选择,它使用3个表,即nba_球员、nba_球队和nba_球队花名册。nba_球员包括球员id的球员数据,nba_球队包括球队id的球队信息。nba_球队名单是一个关联实体,包括球员id和球队id以将两者关联。我希望此查询返回“OKC”队中每个球员的名字和姓氏,但由于某些原因,它给了我下面的错误。我不确定这为什么不能正确执行。任何帮助都将不胜感激 select nba_player.first_name, nba_player.last_name from nba_

我试图在oracle中执行一个选择,它使用3个表,即nba_球员、nba_球队和nba_球队花名册。nba_球员包括球员id的球员数据,nba_球队包括球队id的球队信息。nba_球队名单是一个关联实体,包括球员id和球队id以将两者关联。我希望此查询返回“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';
注意,我还引入了表别名。这使得查询更易于编写和阅读。

简单规则:在
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';
注意,我还引入了表别名。这使得查询更易于编写和阅读。

@ErsinGülbahar。逗号“工作”。你不应该用它们。它们已经过时了。想想旋转拨号电话,或曲柄启动汽车,或煤油灯来阅读。@ErsinGülbahar。逗号“工作”。你不应该用它们。它们已经过时了。想想旋转拨号电话,或曲柄启动汽车,或煤油灯阅读。