找到不在教职员工表中的课程?使用 SQL
Posted
技术标签:
【中文标题】找到不在教职员工表中的课程?使用 SQL【英文标题】:finding the courses not taking in Staff table ? using SQL 【发布时间】:2011-10-17 22:59:46 【问题描述】:我有两张桌子 第一个包含有关参加课程的员工的信息
关于所有可用课程的第二个表格信息,并且必须由员工参加
我希望 quereu SQL 为每个员工找到剩余的课程
例如:-
拉米介绍。爪哇
拉米成。去奥卡德
拉米图片
拉米介绍。到 C++
Rayan 简介。闪光
Rayan C++ 简介
拉扬图片
Rayan 简介。到 Photoshop
Rayan 进入。到奥卡德
.
.
.
。 . . . . 等等所有员工
【问题讨论】:
【参考方案1】:没有测试!但它可能会起作用:
SELECT staff.Name, courses.CourseName
FROM courses LEFT JOIN staff
ON (staff.TrainingCourse = courses.CourseName)
WHERE TrainingCourse IS NULL
【讨论】:
我认为这行不通。如果一门课程没有人注册,但它不会出现在 OP 的第一个表中,但在查询结果集中,每个员工都应该有一条记录。您的查询将无法正确处理这种情况。 这个 sql 给出了不是所有员工都参加过的课程,只是不是每个员工和剩余的课程谢谢你的回答【参考方案2】:我假设您有一个 Staff 表,每个员工有 1 条记录,还有一个 courses 表,每门课程有 1 条记录。我将您帖子中的第一个表称为 CourseRegistrations 表。
SELECT Staff.Name, Courses.CourseName
FROM Courses CROSS JOIN Staff
WHERE NOT EXISTS (SELECT *
FROM CourseRegistrations
WHERE Name = Staff.Name
AND TrainingCourseName = Courses.CourseName)
如果您不熟悉 CROSS JOIN,它的作用是查找人员和课程的所有可能组合,然后在 WHERE 子句中过滤掉您的注册表中已经存在的所有组合。
【讨论】:
我使用 ACCESS 2007 的错误是 ITSFiledTraining CROSS JOIN ITSStaffTraining 有错误,它会影响 JOIN 不确定访问是否支持交叉连接。尝试将 from 更改为:FROM Courses, Staff WHERE NOT EXISTS ... 如果您未指定任何联接,则默认应为交叉联接(笛卡尔积)【参考方案3】:有了这3张桌子...
课程:
CourseName
intro. Flash
intro. Java
intro. to Photoshop
into. To Orcad
intro. to c++
PIC
员工:
sname
Khalid
Rami
Rayan
员工课程:
sname Trainingcourse
Khalid into. To Orcad
Rami intro. Flash
Rami intro. to Photoshop
Rayan intro. Java
...这个查询...
SELECT
xjoin.sname,
xjoin.CourseName
FROM
[
SELECT Courses.CourseName, Staff.sname FROM Courses, Staff
]. AS xjoin
LEFT JOIN StaffCourses
ON
(xjoin.CourseName = StaffCourses.Trainingcourse)
AND (xjoin.sname = StaffCourses.sname)
WHERE
(((StaffCourses.Trainingcourse) Is Null))
ORDER BY
xjoin.sname,
xjoin.CourseName;
...产生这个结果集:
sname CourseName
Khalid intro. Flash
Khalid intro. Java
Khalid intro. to c++
Khalid intro. to Photoshop
Khalid PIC
Rami into. To Orcad
Rami intro. Java
Rami intro. to c++
Rami PIC
Rayan into. To Orcad
Rayan intro. Flash
Rayan intro. to c++
Rayan intro. to Photoshop
Rayan PIC
【讨论】:
感谢我的朋友,我按照你的方式重建了表格,一切都很好:)以上是关于找到不在教职员工表中的课程?使用 SQL的主要内容,如果未能解决你的问题,请参考以下文章