SQL server 高手请进!

来源:百度知道 编辑:UC知道 时间:2024/05/29 03:29:15
http://hi.baidu.com/yenange/blog/item/e2705172e50535168601b01f.html

由于题目的内容较多(要插入数据等), 请进入上面的网址.
其实只是写一条SQL语句而已....
再三感谢!

WITH orders AS(
SELECT cno FROM tbl_score where sno='1002' --查得该学生选修课程作为预定课程
)
SELECT min(c.sname) --聚合函数仅为了满足语法 用max函数也行
FROM tbl_score a LEFT JOIN orders b --左连分数表 得到待筛选的学生记录
ON a.cno = b.cno
INNER JOIN tbl_student c --内连学生表 只为获得学生名字
ON a.sno = c.sno
GROUP BY a.sno HAVING COUNT(*)= COUNT(b.cno) --除去比预定课程多选的学生
AND COUNT(b.cno)= (SELECT COUNT(*) FROM orders) --除去比预定课程少选的学生

你去看看留言.暂无环境,未测试.