显示学生之前未学习的课程的SQL语句

时间:2013-05-24 17:48:44

标签: sql class having

我在MS Access数据库中有三个表。

  1. 学生(学生姓名,电子邮件)
    1. 课程(课程名称,费用)
    2. 注册(课程名称,学生姓名)
  2. 我现在想创建一个Query,它可以显示每个学生之前没有学过的所有课程。这将允许我的注册经理追求他们进行更多的课程注册。

    如何在MS ACCESS中轻松完成此操作?生成的查询应为:

    詹姆斯|高级Flash | 詹姆斯|高级编辑| Adrian |基本编辑| Adrian | Basic Flash | Adrian |高级Flash | Adrian |高级编辑|

    (詹姆斯已经参加了所有“基础”课程,而阿德里安没有参加'基础'和'高级'课程)

1 个答案:

答案 0 :(得分:0)

执行此类查询时,有一个driver表包含学生和课程的所有组合。然后,将其连接到注册,并选择不匹配的行:

select driver.*
from (select s.StudentName, c.CourseName
      from Students as s,
           Courses as c
     ) as driver left join
     Registration as r
     on r.StudentName = driver.StudentName and
        r.CourseName = driver.CourseName
where r.StudentName is NULL;