Menu
Coddy logo textTech

Базовый JOIN, Часть 1

Часть раздела Основы путешествия по SQL на Coddy. Урок 43 из 72.

До сих пор мы решали задачи, касающиеся одной таблицы. Теперь мы рассмотрим, как работать с несколькими таблицами.

Предположим, у нас есть следующие таблицы:

courses

course_idlecturer_id
11
21
32

lecturers

lecturer_idname
1Jhonas
2Malidos

Задача — вывести каждый курс с именем соответствующего преподавателя.

Есть два способа добиться этого. В каждом варианте мы сопоставляем каждую строку одной таблицы со строкой другой. Мы проверяем условие, которое должно быть выполнено, и если условие выполняется, мы объединяем эти две строки в одну. Желаемый результат для обоих вариантов:

course_idlecturer_name
1Jhonas
2Jhonas
3Malidos

Вариант 1:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses, lecturers
WHERE courses.lecturer_id = lecturers.lecturer_id

Здесь мы указываем две таблицы в ключевом слове FROM, а в условии WHERE требуем, чтобы lecturer_id обеих записей совпадали. В предложении SELECT мы теперь пишем table.column, чтобы база данных знала, откуда брать этот столбец.

Вариант 2:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses
JOIN lecturers ON courses.lecturer_id = lecturers.lecturer_id

Вместо WHERE мы используем JOIN table ON condition

Этот тип соединения также называется внутренним соединением (inner join).

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • <strong>grades</strong>: <strong>course_id</strong>, <strong>student_id</strong>, <strong>grade</strong>
  • <strong>students</strong>: <strong>id</strong>, <strong>name</strong>

Создайте запрос, который извлекает student_name, course_id, student_id и grade в одну таблицу. Отсортируйте результат по grade по возрастанию.

Попробуйте сами

-- Перечислите столбцы, которые требует задание, используя псевдоним, который оно требует
SELECT ____
FROM students, grades
-- Оставьте только пары строк, где обе таблицы описывают одного и того же человека
WHERE ____
ORDER BY grade
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница SQL