【发布时间】:2011-04-13 01:26:13
【问题描述】:
我有一个包含三个表的数据库。 “名册”、“培训课程”和“课程注册”
名册和课程注册通过“ETID”(员工培训 ID)连接。课程注册和培训课程通过“课程ID”连接。
我正在尝试创建一个查询,该查询将返回所有员工,以及所有课程的 YES/NO 值。
我写了以下内容来查看特定员工,但我似乎无法找到返回所有员工的正确方法。任何帮助将不胜感激。
SELECT [TRAINING COURSES].[course id]
, [TRAINING COURSES].[course name]
, "YES" AS Completed
, [COURSE ENROLLMENT].[training date]
FROM [TRAINING COURSES]
INNER JOIN [COURSE ENROLLMENT]
ON [COURSE ENROLLMENT].[course id]=[TRAINING COURSES].[course id]
WHERE [COURSE ENROLLMENT].[ETID]=[ENTER ETID]
UNION ALL
SELECT [TRAINING COURSES].[course id]
, [TRAINING COURSES].[course name]
, "No" AS Completed
, NULL
FROM [TRAINING COURSES]
WHERE NOT EXISTS
(
SELECT *
FROM [COURSE ENROLLMENT]
WHERE [COURSE ENROLLMENT].[course id]=[TRAINING COURSES].[course id]
AND [COURSE ENROLLMENT].[ETID]=[ENTER ETID:]
)
ORDER BY [TRAINING COURSES].[course name];
【问题讨论】:
-
请注意:如果您使用 Pascal 大小写:
CourseEnrollment而不是[COURSE ENROLLMENT],您的查询将更容易阅读和编写。您可能更喜欢下划线 (Course_Enrollment),但坦率地说,任何事情都比将每个表格和每个字段都括起来要好。 -
Access 最大的弊端之一是,恕我直言,它允许在对象名称中使用空格。而且我不是一个反身的 Access-basher....
-
我是一名全职的 Access 开发人员,自从我使用它的最初几年,我就没有在对象名称中使用空格。很短的时间后,很明显那里没有实用程序。许多人将对象名称与表示级别名称混淆,其中大部分都可以在您的对象定义中定义(例如表中字段的标题属性)。