/*2007-01-19
http://community.csdn.net/Expert/topic/5305/5305503.xml?temp=.1902277
要求列出至少学习王刚老师所授全部课程的学生姓名
*/
--创建环境
CREATE TABLE S(学号 varchar(10), 姓名 varchar(10), 年龄 int, 性别 varchar(10))
INSERT S SELECT '98001', '董敏', 24, '女'
UNION ALL SELECT '98002', '张三', 24, '男'
UNION ALL SELECT '98003', '李四', 24, '男'
UNION ALL SELECT '98004', '王五', 24, '男'
GO
CREATE TABLE C(课程号 varchar(10), 课程名 varchar(10), 任课教师 varchar(10))
INSERT C SELECT '602', '数据结构', '王刚'
UNION ALL SELECT '603', '操作系统', '王刚'
UNION ALL SELECT '604', 'C语言', '周一'
UNION ALL SELECT '605', 'JAVA', '周一'
UNION ALL SELECT '606', 'VB', '李明'
UNION ALL SELECT '607', 'SQL SERVER', '李明'
GO
CREATE TABLE SC(学号 varchar(10), 课程号 varchar(10), 分数 int)
INSERT SC SELECT '98001', '602', 90
UNION ALL SELECT '98001', '603', 95
UNION ALL SELECT '98003', '602', 65
UNION ALL SELECT '98003', '603', 66
UNION ALL SELECT '98003', '606', 80
UNION ALL SELECT '98004', '602', 65
UNION ALL SELECT '98004', '604', 85
UNION ALL SELECT '98004', '605', 82
GO
--SQL
SELECT * FROM S
WHERE NOT EXISTS(
SELECT 1 FROM C
WHERE 任课教师='王刚'
AND NOT EXISTS(
SELECT 1 FROM SC WHERE SC.学号=S.学号 AND SC.课程号=C.课程号
)
)
--RESULT
/*
学号 姓名 年龄 性别
---------- ---------- ----------- ----------
98001 董敏 24 女
98003 李四 24 男
(2 row(s) affected)
*/
--删除环境
DROP TABLE S, C, SC