Базовый JOIN, Часть 1
Часть раздела Основы путешествия по SQL на Coddy — урок 43 из 72.
На данный момент мы рассмотрели задачи с одной таблицей. Теперь мы изучим, как работать с несколькими таблицами.
Предположим, у нас есть следующие таблицы:
курсы
| course_id | lecturer_id |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
преподаватели
| lecturer_id | name |
|---|---|
| 1 | Jhonas |
| 2 | Malidos |
Задача — представить для каждого курса имя соответствующего лектора.
Есть два способа добиться этого. Для каждого варианта мы сопоставляем каждую строку в одной таблице с другой. Мы проверяем условие, которое должно быть выполнено, и если условие выполнено, мы объединяем две строки в одну. Желаемый результат для обоих вариантов:
| идентификатор_курса | имя_преподавателя |
|---|---|
| 1 | Jhonas |
| 2 | Jhonas |
| 3 | Malidos |
Вариант 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
Этот тип соединения также называется внутренним соединением.
Задание
ЛегкоДоступные таблицы и столбцы:
<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.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов