Оператор SQL, который показывает курсы, которые ранее не проходили учащиеся

У меня есть три таблицы в базе данных MS Access.

  1. Студенты (имя студента, электронная почта)
    1. Курсы (Название курса, Стоимость)
    2. Регистрация (название курса, имя студента)

Теперь я хочу создать Запрос, который может показать мне все классы, которые каждый ученик НЕ БЫЛ раньше. Это позволит моему Менеджеру регистрации продолжить их, чтобы выполнить больше регистрации класса.

Как я могу легко сделать это в MS ACCESS? Результирующий запрос должен быть:

Джеймс |Advanced Flash| Джеймс | Расширенное редактирование | Адриан | Базовое редактирование | Адриан | Базовая вспышка | Адриан | Расширенный Flash | Адриан | Расширенное редактирование |

(Джеймс взял все "базовые" классы, в то время как еще Адриан не взял "базовые" и "продвинутые" классы)

1 ответ

Делая этот тип запроса, это помогает иметь 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;
Другие вопросы по тегам