select student.学号,姓名,分数 from student inner join grade on student.学号=grade.学号 inner join curriculum on 课程名称='C语言程序设计’ 如果是连接查询,on后面是连接条件,不是where后面的过滤条件。select student.学号,姓名,分数 from student inner join grade on student.学号=grade.学号 inner join curriculum on grade.课程=curriculum.课程 where curriculum.课程名称='C语言程序设计’
declare @grade table (学号 varchar(4),课程编号 varchar(4),分数 int,备注 varchar(200)) insert into @grade select '0001','0001',80,null union all select '0001','0002',90,null union all select '0001','0003',87,null union all select '0001','0004',88,null union all select '0001','0005',78,null union all select '0002','0001',76,null union all select '0002','0002',73,null union all select '0002','0003',67,null union all select '0002','0004',70,null union all select '0002','0005',89,null union all select '0003','0001',83,null union all select '0003','0002',73,null union all select '0003','0003',84,null union all select '0003','0004',75,null union all select '0003','0005',90,null union all select '0004','0001',80,null union all select '0004','0001',80,null union all select '0004','0001',80,nulldeclare @curriculum table (课程编号 varchar(4),课程名称 varchar(14),学分 varchar(18),c4 int)insert into @curriculum select '0001','大学计算机基础','2',null union all select '0002','C语言程序设计','2',null union all select '0003','SQL','Server数据库及应用',2 union all select '0004','英语','4',null union all select '0005','高等数学','4',nulldeclare @student table (学号 varchar(4),性别 varchar(2),出生日期 datetime,家庭地址 varchar(19), 姓名 varchar(6),备注 varchar(6)) insert into @student select '0001','男','1980-10-1','衡山市东风路76号','刘卫平',null union all select '0002','男','1980-12-2','东阳市八一北路25号','张卫民',null union all select '0003','男','1980-7-4','长岭市五一路785号','马东',null union all select '0004','男','1980-5-10','滨海市洞庭大道278号','钱达理',null union all select '0005','男','1980-7-13','东方市中山路25号','东方牧',null union all select '0006','男','1980-6-4','长岛市解放路25号','郭文斌',null union all select '0007','女','1980-3-15','山南市红旗路15号','肖海燕',null union all select '0008','女','1980-4-18','滨江市韶山路35号','张明华',null select a.学号,a.姓名,分数 from @student a right join @grade b on a.学号=b.学号 left join @curriculum c on b.课程编号=c.课程编号 where c.课程名称='C语言程序设计' /* 学号 姓名 分数 ---- ------ ----------- 0001 刘卫平 90 0002 张卫民 73 0003 马东 73*/
select student.学号,姓名,分数 from student inner join grade on student.学号=grade.学号 inner join curriculum on curriculum.课程编号=grade.课程编号 where 课程名称='C语言程序设计'
select student.学号,姓名,分数 from student inner join grade on student.学号=grade.学号 inner join curriculum on curriculum.课程编号=grade.课程编号 where 课程名称='C语言程序设计'
from student
inner join grade on student.学号=grade.学号
inner join curriculum on 课程名称='C语言程序设计’
如果是连接查询,on后面是连接条件,不是where后面的过滤条件。select student.学号,姓名,分数
from student
inner join grade on student.学号=grade.学号
inner join curriculum on grade.课程=curriculum.课程
where curriculum.课程名称='C语言程序设计’
学号 课程编号 分数 备注
0001 0001 80
0001 0002 90
0001 0003 87
0001 0004 88
0001 0005 78
0002 0001 76
0002 0002 73
0002 0003 67
0002 0004 70
0002 0005 89
0003 0001 83
0003 0002 73
0003 0003 84
0003 0004 75
0003 0005 90
0004 0001 80
0004 0001 80
0004 0001 80
grade 表
0001 大学计算机基础 2
0002 C语言程序设计 2
0003 SQL Server数据库及应用 2
0004 英语 4
0005 高等数学 4
curriculum表
0001 男 1980-10-1 衡山市东风路76号 刘卫平
0002 男 1980-12-2 东阳市八一北路25号 张卫民
0003 男 1980-7-4 长岭市五一路785号 马东
0004 男 1980-5-10 滨海市洞庭大道278号 钱达理
0005 男 1980-7-13 东方市中山路25号 东方牧
0006 男 1980-6-4 长岛市解放路25号 郭文斌
0007 女 1980-3-15 山南市红旗路15号 肖海燕
0008 女 1980-4-18 滨江市韶山路35号 张明华
student 表
declare @grade table
(学号 varchar(4),课程编号 varchar(4),分数 int,备注 varchar(200))
insert into @grade
select '0001','0001',80,null union all
select '0001','0002',90,null union all
select '0001','0003',87,null union all
select '0001','0004',88,null union all
select '0001','0005',78,null union all
select '0002','0001',76,null union all
select '0002','0002',73,null union all
select '0002','0003',67,null union all
select '0002','0004',70,null union all
select '0002','0005',89,null union all
select '0003','0001',83,null union all
select '0003','0002',73,null union all
select '0003','0003',84,null union all
select '0003','0004',75,null union all
select '0003','0005',90,null union all
select '0004','0001',80,null union all
select '0004','0001',80,null union all
select '0004','0001',80,nulldeclare @curriculum table
(课程编号 varchar(4),课程名称 varchar(14),学分 varchar(18),c4 int)insert into @curriculum
select '0001','大学计算机基础','2',null union all
select '0002','C语言程序设计','2',null union all
select '0003','SQL','Server数据库及应用',2 union all
select '0004','英语','4',null union all
select '0005','高等数学','4',nulldeclare @student table
(学号 varchar(4),性别 varchar(2),出生日期 datetime,家庭地址 varchar(19),
姓名 varchar(6),备注 varchar(6))
insert into @student
select '0001','男','1980-10-1','衡山市东风路76号','刘卫平',null union all
select '0002','男','1980-12-2','东阳市八一北路25号','张卫民',null union all
select '0003','男','1980-7-4','长岭市五一路785号','马东',null union all
select '0004','男','1980-5-10','滨海市洞庭大道278号','钱达理',null union all
select '0005','男','1980-7-13','东方市中山路25号','东方牧',null union all
select '0006','男','1980-6-4','长岛市解放路25号','郭文斌',null union all
select '0007','女','1980-3-15','山南市红旗路15号','肖海燕',null union all
select '0008','女','1980-4-18','滨江市韶山路35号','张明华',null
select a.学号,a.姓名,分数
from @student a
right join @grade b on a.学号=b.学号
left join @curriculum c on b.课程编号=c.课程编号
where c.课程名称='C语言程序设计'
/*
学号 姓名 分数
---- ------ -----------
0001 刘卫平 90
0002 张卫民 73
0003 马东 73*/
from student
inner join grade on student.学号=grade.学号
inner join curriculum on curriculum.课程编号=grade.课程编号
where 课程名称='C语言程序设计'
from student
inner join grade on student.学号=grade.学号
inner join curriculum on curriculum.课程编号=grade.课程编号
where 课程名称='C语言程序设计'