Таблица a1
id | fk | name |
1 | 1 | Имя 1 -1 |
2 | 2 | Имя 2 -2 |
3 | 2 | Имя 3 -2 |
4 | 2 | Имя 4 - 2 |
5 | 3 | Имя 5 - 3 |
6 | 6 | Имя 6 - 6 |
Таблица a2
id2 | name 2 |
1 | Имя 1 |
2 | Имя 2 |
3 | Имя 3 |
4 | Имя 4 |
5 | Имя 5 |
SELECT * FROM `a2` LEFT JOIN `a1` ON `a2`.`id2` = `a1`.`fk`;
id2 | name2 | id | fk | name |
1 | Имя 1 | 1 | 1 | Имя 1 -1 |
2 | Имя 2 | 4 | 2 | Имя 4 - 2 |
2 | Имя 2 | 3 | 2 | Имя 3 -2 |
2 | Имя 2 | 2 | 2 | Имя 2 -2 |
3 | Имя 3 | 5 | 3 | Имя 5 - 3 |
4 | Имя 4 | NULL | NULL | NULL |
5 | Имя 5 | NULL | NULL | NULL |
SELECT * FROM `a2` RIGHT JOIN `a1` ON `a2`.`id2` = `a1`.`fk`;
id2 | name2 | id | fk | name |
1 | Имя 1 | 1 | 1 | Имя 1 -1 |
2 | Имя 2 | 2 | 2 | Имя 2 -2 |
2 | Имя 2 | 3 | 2 | Имя 3 -2 |
2 | Имя 2 | 4 | 2 | Имя 4 - 2 |
3 | Имя 3 | 5 | 3 | Имя 5 - 3 |
NULL | NULL | 6 | 6 | Имя 6 - 6 |
SELECT * FROM `a2` INNER JOIN `a1` ON `a2`.`id2` = `a1`.`fk`;
Если в данном запросе вместо INNER JOIN написать просто JOIN - результат не изменится, поскольку под просто JOIN подразумевается INNER JOIN.
id2 | name2 | id | fk | name |
1 | Имя 1 | 1 | 1 | Имя 1 -1 |
2 | Имя 2 | 2 | 2 | Имя 2 -2 |
2 | Имя 2 | 3 | 2 | Имя 3 -2 |
2 | Имя 2 | 4 | 2 | Имя 4 - 2 |
3 | Имя 3 | 5 | 3 | Имя 5 - 3 |
Запрос на удаление записей из нескольких таблиц с испольтзованием JOIN
DELETE `a2`, `a1` FROM `a2` JOIN `a1` ON `a2`.`id2` = `a1`.`fk` WHERE `id2` = 2;