Menu
Coddy logo textTech

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

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

На данный момент мы рассмотрели задачи с одной таблицей. Теперь мы изучим, как работать с несколькими таблицами.

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

курсы

course_idlecturer_id
11
21
32

преподаватели

lecturer_idname
1Jhonas
2Malidos

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

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

идентификатор_курсаимя_преподавателя
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

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

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 в порядке возрастания.

Шпаргалка

Чтобы объединить данные из нескольких таблиц, используйте либо синтаксис с запятой и WHERE, либо синтаксис JOIN:

Вариант 1: Синтаксис с запятой и WHERE

SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.id = table2.id

Вариант 2: Синтаксис JOIN

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.id = table2.id

Используйте синтаксис table.column, чтобы указать, из какой таблицы берется столбец при выборе из нескольких таблиц. Этот тип соединения называется inner join.

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

quiz iconПроверьте себя

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

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