日期:2014-05-17  浏览次数:21319 次

怎么根据外键查询关联表数据?
study表:
id         name   class
11001   张三   110
11002   李四   110
11101   张三   111
11202   王五   112
exam表:
id         subject   scores
11001   数学         80
11002   数学         90
11101   数学         67
11201   数学         87
11001   语文         54
11002   语文         90
11101   语文         98
11201   语文         67
我已经将EXAM表的id设为主键,那么外键应该怎么设置,怎么查询这个外键呢?

------解决方案--------------------
LZ你太有才了,exam表中id有重復也可以設為主鍵呀
SQL code

alter table study add constraint pk_study(id) primary key

alter table exam add constraint pk_exam(id,subject) primary key

alter table exam add constraint fk_exam_id foreign key(id)
references study(id)

------解决方案--------------------
应该是study表的id为主键吧? 学员ID应该不会重复 

然后exam表的id 对应的是study表的id 相当于外键 


查询的时候 如果是要查询每个人的姓名学科分数 直接关联就可以了


------解决方案--------------------
列举简单的例子 查询存在分数的学员姓名学科分数

SQL code

create table study (id number(10),name varchar2(20),class number(5));
insert into study values (11001,'张三',110);
insert into study values (11002,'李四',110);
insert into study values (11101,'张三',111);
insert into study values (11202,'王五',112);

create table exam (id number(10),subject varchar2(20),scores number(5));
insert into exam values (11001,'数学',80);
insert into exam values (11002,'数学',90);
insert into exam values (11101,'数学',67);
insert into exam values (11202,'数学',87);
insert into exam values (11001,'语文',54);
insert into exam values (11002,'语文',90);
insert into exam values (11101,'语文',98);
insert into exam values (11202,'语文',87);
commit;

select a.name,b.subject,b.scores
from study a,exam b 
where a.id = b.id
order by a.id

      id    name   subject  scores
---------------------------------
1    11001    张三    数学    80
2    11001    张三    语文    54
3    11002    李四    数学    90
4    11002    李四    语文    90
5    11101    张三    语文    98
6    11101    张三    数学    67
7    11202    王五    语文    87
8    11202    王五    数学    87