SQL: Join
Теория: INNER JOIN и WHERE
Инструкция WHERE фильтрует данные в SELECT запросе. А INNER JOIN позволяется связывать данные из разных таблиц. В этом уроке мы научимся совместному использованию соединений и фильтрации.
Используем INNER JOIN вместе с WHERE
Рассмотрим пример с книгами и их авторами.
Таблица authors хранит имя и происхождение автора:
authors
Таблица books хранит название, ссылку на автора и язык, на котором издана книга. Разные переводы книги — это разные сущности в таблице:
books
С помощью INNER JOIN мы можем связать каждую книгу с ее автором, а оператор WHERE позволяет отфильтровать строки по заданному условию.
Например, нам нужно получить список книг и их авторов — книги должны быть изданы на русском языке, а авторы должны быть иностранными. Следующий запрос решает нашу задачу:
Результат выполнения запроса:
Логически СУБД выполняет запрос в следующем порядке:
INNER JOIN— сначала выполняется соединение двух таблиц по условию:books.author_id = authors.author_idWHERE— затем применяется фильтрация строк с условием:books.language = 'русский' AND authors.origin != 'Россия'- Отбрасываются все столбцы кроме
author_nameиtitle
В реальности СУБД может изменить порядок операций, чтобы получить такой же результат, но быстрее.
Выводы
В этом уроке мы изучили, как применять фильтрацию в запросах с соединением таблиц. Операторы WHERE и INNER JOIN обогащают возможности друг друга. Совмещая их, мы можем точнее описать желаемый набор данных.
.png)














