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