注册 登录
编程论坛 SQL Server论坛

使用SQL语句按如下要求写出正确的查询语句

lovefan 发布于 2013-03-28 18:38, 1542 次点击
检索选修课程包含LIU老师所受全部课程的学生学号。
数据库中的四个关系如下:
教师关系T(T#,TNAME,TITLE)
课程关系C(C#,CNAME,T#)
学生关系S(S#,SNAME,AGE,SEX)
选课关系SC(S#,C#,SCORE)
S表
S#    SNAME    AGE    SEX
S1    WANG    15    男
S2    LI    17    女
S3    LU    19    女
S4    ZHAO    13    女
S5    YANG    20    男
C表
C#    CNAME    T#
C1    MATHS    T1
C2    DB    T2
C3    ENGLISH    T3
C4    COMPUTER    T2

SC 表
S#    C#    SCORE
S1    C1    50
S2    C1    70
S3    C1    80
S4    C1    75
S5    C1    87
S1    C2   
S2    C2   
S4    C2    85
S1    C3   
S1    C4    60

T表
T#    TNAME    TITLE
T1    WU    讲师
T2    LIU    教授
T3    ZHANG    助教
上面为关系图,希望高人能指点一下,我写了很久总是不出我想要的正确结果。非常感谢高手的回答!!!
11 回复
#2
party6202013-03-29 08:54

select Sname from S表 where S# in(
select S# from SC表 where C# in(
select C# from C表 where T#=(
select T# from T表 whereTname='liu')))

可能有错,如果有错,请把错误粘贴出来,我可以根据错误来修改
#3
tlliqi2013-03-29 16:50
程序代码:
select Sname from S表 where S# in(
select S# from SC表 where C# in(
select C# from C表 where T#=(
select T# from T表 where Tname='liu')))
#4
tlliqi2013-03-29 16:51
whereTname---where Tname
(---(
#5
party6202013-03-30 08:42
哦,小T版真细心
#6
tlliqi2013-03-30 08:45
谢谢夸奖
#7
lovefan2013-04-03 06:23
回复 3楼 tlliqi
这个答案不对,这个答案的显示结果为
Wang            
Li            
Zhao   
根据题意及其表的分析结果应该为C1…………   
#8
party6202013-04-03 08:35
这个得到的是学生姓名,如果你想要学号
select S# from SC表 where C# in(
select C# from C表 where T#=(
select T# from T表 whereTname='liu')))  
你的S#是学号吧
#9
chenpengfei12013-04-24 22:55
支持楼上,我感觉这个in 子查询写的非常好!






这个得到的是学生姓名,如果你想要学号
select S# from SC表 where C# in(
select C# from C表 where T#=(
select T# from T表 whereTname='liu')))  
你的S#是学号吧
#10
tlliqi2013-04-25 08:04
回复 8楼 party620
没错
#11
chenpengfei12013-04-29 20:52
问一下这个可不可以这样写呢?
用集合查询 union
select  s#
from
s表union c表 union t表 union sc表
就是把这四张表连接起来构成一张大表在大表中直接查询是s#呢?
#12
mlbd852013-05-21 08:51
受学习了
1