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

关系表的查询语句...在线等解决
学生表
          SID(PK),SNo,SName。。。。。

科目表
          KID(PK),   KName
          共   5个或者3个科目,英语数学。。。。

学生成绩表
          SID,KID,Grade
          1         1         60       (学生1,科目1,成绩)
          1         2         80

        结果表:
    学生名称           科目1成绩         科目2成绩         科目3成绩

SELECT   学生成绩表.SName,学生成绩表.KName   FROM   学生成绩表   INNER   JOIN   学生表   ON   学生成绩表.SID=学生表.SID   INNER   JOIN   科目表   ON   学生成绩表.KID=科目表.KID   where   SName= "SName "  

这个语句写的对吗?   不对帮改下


------解决方案--------------------
--建立学生表测试数据
declare @t1 table(sid int,sno varchar(10),sname varchar(50))
insert into @t1 select 1, '001 ', '赵 '
insert into @t1 select 2, '002 ', '钱 '
insert into @t1 select 3, '003 ', '孙 '
insert into @t1 select 4, '004 ', '李 '
--建立科目表测试数据
declare @t2 table(kid int,kname varchar(50))
insert into @t2 select 101, '英语 '
insert into @t2 select 102, '数学 '
insert into @t2 select 103, '语文 '
insert into @t2 select 104, '历史 '
insert into @t2 select 105, '政治 '
--建立学生成绩表测试数据
declare @t3 table(sid int,kid int,grade float)
insert into @t3 select 1,101,60
insert into @t3 select 1,102,80
insert into @t3 select 2,101,80
insert into @t3 select 2,102,50
--查询语句
SELECT B.SName,C.KName,A.grade
FROM @t3 A INNER JOIN @t1 B ON A.SID=B.SID INNER JOIN @t2 C ON A.KID=C.KID and SName= '赵 '
--结果
SName KName grade
----- ------- -----
赵 英语 60
赵 数学 80

----------------------------------
自己要学会思考,这样才会有提高。