У меня есть 3 таблицы: Сотрудники (EmpID, FN, LN) Обязательные тренинги (TrainingID, TrainingName) Завершенные тренинги (CompletedID, EmployeeName (поле поиска от Employee), TrainingName (поле поиска из обязательных тренингов), Дата завершения)
Затем я создал запросы для отображения всей информации в таблицах
SELECT CaregiverInformation.CaregiverID, CaregiverInformation.FirstName, CaregiverInformation.LastName FROM CaregiverInformation; SELECT CaregiverCompletedTraining.TrainingRecordID, CaregiverCompletedTraining.Caregiver, CaregiverCompletedTraining.Training, CaregiverCompletedTraining.CompletedDate, CaregiverCompletedTraining.ExpiredDate, IIf(Date()>=[ExpiredDate],"Expired","Current") AS IsExpired FROM CaregiverCompletedTraining; SELECT RequiredTrainings.TrainingID, RequiredTrainings.TrainingName, RequiredTrainings.Required FROM RequiredTrainings;
Если сотрудник проходит обучение, оно отслеживается в таблице завершенных тренингов. Мне нужно создать запрос, который покажет все тренинги, перечисленные в рамках обязательных тренингов для всех сотрудников в таблице сотрудников, независимо от того, находятся ли они в таблице завершенных тренировок. Однако, если он находится в таблице завершенных тренировок, я хочу, чтобы в ней была указана дата проведения обучения.
Я могу получить запрос, чтобы перечислить всех сотрудников со всеми тренингами с помощью следующего кода SQL
SELECT qry_CaregiverInformation.CaregiverID, qry_CaregiverInformation.FirstName, qry_CaregiverInformation.LastName, qry_RequiredTrainings.TrainingName FROM qry_CaregiverInformation, qry_CompletedTrainings, qry_RequiredTrainings WHERE (((qry_CaregiverInformation.CaregiverID) Like "*") AND ((qry_RequiredTrainings.TrainingName) Like "*"));
Однако я не могу получить полную информацию для правильной работы. Я пробовал объединение, и количество столбцов не совпадает. Если я добавляю пустые столбцы в мой SQL, я получаю ошибку несоответствия данных. Любая помощь будет принята с благодарностью.
Я всегда нахожу полезным иметь несколько тестовых примеров данных SQL и запросов, с которыми у вас проблемы на http://sqlfiddle.com/ или какой-либо аналогичный онлайн-инструмент, и публиковать там ссылку с вашим вопросом, чтобы люди могли помочь с вашими фактическими данными. и будьте уверены, что результаты - это то, что ожидается. Просто на тот случай, если вы не можете подтвердить иное, подумайте о том, чтобы потратить время и получить эту настройку как таковую, если вы все еще не получаете того, что вам нужно, а затем [отредактировать] и добавить ссылку на ваши данные и т. Д., Чтобы люди, которые могут помочь, могли проверить ,
Pimp Juice IT 6 лет назад
0
1 ответ на вопрос
0
emte
это просто простое соединение слева:
select * from CaregiverInformation i left join RequiredTrainings r on r.CaregiverID = i.CaregiverID left join CaregiverCompletedTraining c on c.TrainingRecordID = r.TrainingRecordID
если вы хотите ограничить i только если существует r, используйте там внутреннее соединение:
select * from CaregiverInformation i inner join RequiredTrainings r on r.CaregiverID = i.CaregiverID left join CaregiverCompletedTraining c on c.TrainingRecordID = r.TrainingRecordID