Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос в БД  [new]
alinka77701
Member

Откуда:
Сообщений: 3
имеется бд Университет. в ней есть таблицы студенты, преподаватели и экзамен. таблица экзамен содержит информацию о сдаче экзамена( id студента,id преподавателя, оценка, дата). таблица студенты и преподаватели никак не связаны. вся связь происходит через бд Экзамен. то есть студенты связаны с экзаменом 1 ко многим и преподаватели с экзаменом 1 ко многим. задача: для каждого студента вывести всех преподавателей, у которых он еще не сдавал экзамен. вопрос: как это сделать?
28 ноя 16, 23:00    [19944963]     Ответить | Цитировать Сообщить модератору
 Re: запрос в БД  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20600
студенты inner join экзамены left join преподаватели
28 ноя 16, 23:10    [19944986]     Ответить | Цитировать Сообщить модератору
 Re: запрос в БД  [new]
alinka77701
Member

Откуда:
Сообщений: 3
Akina,при таком соединении для каждого студента выводится преподаватель, у которого студент уже сдавал экзамен. а мне нужно наоборот: для каждого студента вывести преподавателя, у которого он еще не сдавал экзамен
29 ноя 16, 09:52    [19945820]     Ответить | Цитировать Сообщить модератору
 Re: запрос в БД  [new]
baracs
Member

Откуда: Москва
Сообщений: 7204
alinka77701
...выводится преподаватель, у которого студент уже сдавал экзамен.
Только?
29 ноя 16, 10:28    [19945969]     Ответить | Цитировать Сообщить модератору
 Re: запрос в БД  [new]
londinium
Member

Откуда: Киев
Сообщений: 1176
автор
имеется бд Университет. в ней есть таблицы студенты, преподаватели и экзамен. таблица экзамен содержит информацию о сдаче экзамена( id студента,id преподавателя, оценка, дата). таблица студенты и преподаватели никак не связаны. вся связь происходит через бд Экзамен. то есть студенты связаны с экзаменом 1 ко многим и преподаватели с экзаменом 1 ко многим. задача: для каждого студента вывести всех преподавателей, у которых он еще не сдавал экзамен. вопрос: как это сделать?


WITH AllStudentsTeachers AS
(
   SELECT S.Student_ID,T.Teacher_ID
     FROM Students S
     CROSS JOIN Teachers T
),
Exams AS
(
   SELECT DISTINCT E.Student_ID,E.Teacher_ID
     FROM Exams E
)
SELECT A.Student_ID,A.Teacher_ID
FROM AllStudentsTeachers A
EXCEPT
SELECT EX.Student_ID,EX.Teacher_ID
FROM EXAMS EX


Если где глюк, то это я с утра еще не до конца проснулся )))
29 ноя 16, 10:43    [19946030]     Ответить | Цитировать Сообщить модератору
 Re: запрос в БД  [new]
alinka77701
Member

Откуда:
Сообщений: 3
londinium, все отлично работает, спасибо большое, выручили, без Вашей помощи бы не справилась ;)
29 ноя 16, 19:00    [19948752]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить