51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1615|回复: 2
打印 上一主题 下一主题

[原创] SQL题二

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-6-18 10:36:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:
为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA)   S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )        C#,CN       分别代表课程编号、课程名称
SC ( S#,C#,G )    S#,C#,G     分别代表学号、所选修的课程编号、学习成绩









要求实现如下5个处理:

  1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

  2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

  3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

  4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

  5. 查询选修了课程的学员人数

  6. 查询选修课程超过5门的学员学号和所属单位






























1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
--实现代码:
SELECT SN,SD FROM S
WHERE [S#] IN(
    SELECT [S#] FROM C,SC
    WHERE C.[C#]=SC.[C#]
        AND CN=N'税收基础')


2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
--实现代码:
SELECT S.SN,S.SD FROM S,SC
WHERE S.[S#]=SC.[S#]
    AND SC.[C#]='C2'

3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
--实现代码:
SELECT SN,SD FROM S
WHERE [S#] NOT IN(
    SELECT [S#] FROM SC
    WHERE [C#]='C5')

4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
--实现代码:
SELECT SN,SD FROM S
WHERE [S#] IN(
    SELECT [S#] FROM SC
        RIGHT JOIN C ON SC.[C#]=C.[C#]
    GROUP BY [S#]
    HAVING COUNT(*)=COUNT(DISTINCT [S#]))

5. 查询选修了课程的学员人数
--实现代码:
SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC

6. 查询选修课程超过5门的学员学号和所属单位
--实现代码:
SELECT SN,SD FROM S
WHERE [S#] IN(
    SELECT [S#] FROM SC
    GROUP BY [S#]
    HAVING COUNT(DISTINCT [C#])>5)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-6-19 09:26:37 | 只看该作者
楼主是SQL专员
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-10-22 11:45:32 | 只看该作者
多谢楼主分享
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-19 19:32 , Processed in 0.061521 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表