INNER JOIN — возвращает только совпадающие записи из обеих таблиц.
LEFT JOIN — возвращает все записи из левой таблицы, даже если в правой нет совпадений (вместо них будут NULL).
JOIN используется в SQL для объединения данных из нескольких таблиц по общему полю (обычно — ключ).
Тип JOIN определяет, какие строки попадут в результат, если совпадений нет.
Возвращает только те строки, где есть совпадение по условию ON в обеих таблицах.
Синтаксис:
SELECT A.*, B.* FROM A INNER JOIN B ON A.key = B.key;
Пример:
students
| id | name |
|---|---|
| 1 | Kate |
| 2 | John |
grades
| id | student_id | grade |
|---|---|---|
| 1 | 1 | A |
SELECT students.name, grades.grade FROM students INNER JOIN grades ON students.id = grades.student_id;
Результат:
| name | grade |
|---|---|
| Kate | A |
(John не попал, т.к. у него нет записи в grades.)
Возвращает все строки из левой таблицы,
а из правой — только совпадения.
Если совпадения нет — правые поля будут NULL.
Синтаксис:
SELECT A.*, B.* FROM A LEFT JOIN B ON A.key = B.key;
Пример:
SELECT students.name, grades.grade FROM students LEFT JOIN grades ON students.id = grades.student_id;
Результат:
| name | grade |
|---|---|
| Kate | A |
| John | NULL |
(Т.е. показываются все студенты, даже без оценок.)
INNER JOIN возвращает только пересечение. Визуально: 🟢 (A ∩ B)
LEFT JOIN возвращает всё из A + пересечение. Визуально: 🟢A + 🟢(A ∩ B)
Ситуация: нужно увидеть только пользователей с заказами.
Какой JOIN выбрать: INNER JOIN
Ситуация: нужно увидеть всех пользователей, даже без заказов.
Какой JOIN выбрать: LEFT JOIN
Ситуация: нужно увидеть только записи без совпадений (т.е. “нет заказов”).
Какой JOIN выбрать: LEFT JOIN ... WHERE orders.id IS NULL
Пример:
SELECT users.name FROM users LEFT JOIN orders ON users.id = orders.user_id WHERE orders.id IS NULL;
-> покажет всех пользователей без заказов.
INNER JOIN берёт только совпадения между таблицами. Использовать, если нужны только связанные данные.
LEFT JOIN берёт все строки из левой таблицы + совпадения из правой. Использовать, если важны все записи из левой таблицы, даже без связей
Чтобы пожаловаться или сообщить об ошибке, войдите в аккаунт или зарегистрируйтесь.