Учебная база данных сотрудников MS Access SQL - PullRequest
0 голосов
/ 11 января 2019

У меня есть база данных Microsoft Access, которая используется для отслеживания обучения сотрудников.

База данных содержит три таблицы:

tblEmployees(EmployeeID, Name, Function) 
tblTraining_Courses(CourseID, Title, Desc, Function)
tblTraining_Records(EmployeeID, CourseID, Date, Status)

EmployeeID - это их табельный номер
Имя - имя сотрудника
Функция - это линейка продуктов, которую поддерживает сотрудник - электрическая, световая или обе (многозначный поиск)
CourseID - это идентификационный номер курса
Статус - закончен ли курс

Я пытаюсь запросить таблицу «tblTraining_Records», чтобы узнать, какие сотрудники не прошли курс обучения.

Я последовал другому примеру, опубликованному здесь, и он работает очень хорошо: Stackoverflow: пример MS Access SQL не принят

Однако я также хочу отфильтровать этот запрос на основе того, соответствует ли функция сотрудников функции курсов. Эта функция представляет собой многозначное поле поиска с тремя возможными вариантами выбора: Электрическое, Освещение или Оба. Курсы также могут быть только для электрооборудования, освещения или для обоих.

Вот SQL, который у меня есть для моего запроса.

SELECT nested.EmployeeID, nested.Course_ID
FROM (SELECT distinct EmployeeID, Course_ID FROM tblEmployees, tblTraining_Courses) nested 
LEFT JOIN tblTraining_Records r ON r.EmployeeID = nested.EmployeeID AND r.Course_ID = nested.Course_ID
WHERE r.Employee is NULL;

Любая помощь будет принята с благодарностью. Спасибо

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я добавлю этот подход: (давайте назовем это Query1) Когда вы объединяете все 3 таблицы и имеете все поля в запросе - у вас будет 2 поля с именем Function. Это не разрешено, поэтому давайте добавим псевдоним eFunction для сотрудника и cFunction для курса.

Затем создайте вычисляемое поле: Завершено: iif (cFunction = eFunction, «Yes», ​​Null)

тогда вы можете отфильтровать Query1 на Да

0 голосов
/ 11 января 2019

Присоединитесь к курсам с помощью вложенной таблицы, а затем добавьте новое условие в предложение where следующим образом:

SELECT nested.EmployeeID, nested.Course_ID
FROM (SELECT distinct EmployeeID, Course_ID FROM tblEmployees, tblTraining_Courses) nested 
LEFT JOIN tblTraining_Records r ON r.EmployeeID = nested.EmployeeID AND r.Course_ID = nested.Course_ID
inner join   tblTraining_Courses tc on  nested.course_ID=tc.CourseID
WHERE r.Employee is NULL and tc.Title IN ('Electrical', 'Lighting');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...