Как написать запрос, где вы получаете информацию на основе внешнего ключа из дочерней таблицы на доступ MS? - PullRequest
0 голосов
/ 23 февраля 2020

Я пишу базу данных, в которой у меня есть 3 таблицы для хранения данных и четвертая таблица для хранения фактических операций. Я извлекаю данные из 2 таблиц на основе их внешних ключей (пользователей и таблиц курса), а затем хочу получить название колледжа на основе идентификатора колледжа из таблицы курса. Например, если в таблице операций внешний ключ для курса Id = 1, я хочу извлечь имя из таблицы колледжа, где Id курса = 1 в таблице курса.

Отношение:

enter image description here

Это запрос для извлечения данных без добавления для извлечения названия колледжа

SELECT First_Name, Second_Name, Last_Name, Course_Name, Date_Course, College_Name AS OperationDetails
FROM (Operations INNER JOIN Users ON Operations.User_id = Users.User_Id) INNER JOIN Courses ON 
Operations.course_Id = Courses.Course_Id;

Я попытался присоединиться к таблице колледжа вытащить название колледжа, но я не смог предложить, как написать запрос.

1 Ответ

0 голосов
/ 23 февраля 2020

Вам нужно еще одно соединение с Colleges, например:

SELECT Users.First_Name, Users.Second_Name, Users.Last_Name, 
       Courses.Course_Name, Courses.Date_Course, 
       Coleges.College_Name AS OperationDetails
FROM (
  (Operations INNER JOIN Users ON Operations.User_id = Users.User_Id) 
  INNER JOIN Courses ON Operations.course_Id = Courses.Course_Id
)
INNER JOIN Colleges ON Coleges.college_id = Courses.college_id;

Это последнее соединение основано на college_id таблицы Courses, потому что вы говорите: Я хочу получить имя из таблицы колледжа, где идентификатор курса = 1 в таблице курса . Кроме того, вы должны квалифицировать все имена столбцов с помощью имени таблицы / псевдонима, и в таком случае, когда задействованы несколько таблиц, вы должны использовать псевдонимы, чтобы сделать код короче и более читабельным:

SELECT u.First_Name, u.Second_Name, u.Last_Name, 
       c.Course_Name, c.Date_Course, 
       g.College_Name AS OperationDetails
FROM (
  (Operations AS o INNER JOIN Users AS u ON o.User_id = u.User_Id) 
  INNER JOIN Courses AS c ON o.course_Id = c.Course_Id
)
INNER JOIN Colleges AS g ON g.college_id = c.college_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...