SQL-запрос для отдельных преподавателей и курсов - PullRequest
1 голос
/ 23 октября 2019

Вопрос сформулирован, так как есть база данных по профессорам, кафедрам, курсам и расписанию. Нужно написать запрос, который возвращает имена всех профессоров и их соответствующих курсов. Каждый ряд должен содержать имя профессора, за которым следует название курса, который преподает профессор. В строках не должно быть дубликатов.

Схема, которая у меня есть, с точки зрения имени таблицы и полей:

PROFESSOR: ID, NAME, DEPARTMENT_ID, SALARY
DEPARTMENT: ID, NAME
COURSE: ID, NAME, DEPARTMENT_ID, CREDITS
SCHEDULE: PROFESSOR_ID, COURSE_ID, SEMESTER, YEAR

Код, который я сейчас имею:

SELECT DISTINCT p.Name AND c.NAME
FROM Prodessor p, Course c, Schedule S

WHERE
    p.DEPARTMENT_ID = c.DEPARTMENT_ID
    AND
    p.ID = s.PROFESSOR_ID
    AND
    c.ID = c.COURSE_ID

Результат, который я получаюЭто список всех профессоров, но нет нескольких курсов, только один. Что здесь не так? Также упомянуто, что PROFESSOR.ID не соответствует COURSE.PROFESSOR_ID, поэтому p.ID = s.PROFESSOR_ID является действительным

Ответы [ 2 ]

1 голос
/ 23 октября 2019

кажется, вам нужно left join вместо inner join. я думаю, что вам не нужно Отдельно () с такой информацией

select distinct p.Name, c.Name, s.*
from schedules s
left join Professor p on p.id = s.professor_id
inner join Department d on d.department_id = p.department_id
left join Course c on c.professor_id = p.id

, но если вам нужна только информация о профессоре и курсе, при условии, что есть профессора, у которых еще нет расписаний. так что course информации пока нет.

select distinct p.Name, c.Name
from Professor s
left join Course c on c.professor_id = p.id
0 голосов
/ 23 октября 2019

Я бы использовал здесь левое объединение и включало бы только таблицы преподавателей и курсов.

SELECT
    p.NAME,
    COALESCE(c.COURSE_ID, 'no courses available') AS COURSE_ID
FROM PROFESSOR p
LEFT JOIN COURSE c
    ON p.ID = c.PROFESSOR_ID
ORDER BY
    p.NAME;

Параметр левого объединения позволяет отображать сообщение, если у данного профессора нет курсов, связанных с ним.

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