Использование JOIN в SQL запросах гораздо проще понять если отобразить их в диаграммах Эйлера-Венна. Когда я изучал SQL мне попались только англоязычные материалы. Ligaya Turmelle и Jeff Atwood. Надеюсь этот материал поможет русскоязычным коллегам.
Для экспериментов используется две таблицы.
Таблица А:
Таблица B:
Выбираются строки из таблицы A и B, в которых есть одинаковые ключевые значения и в таблице A и в таблице B.
Для экспериментов используется две таблицы.
Таблица А:
create table `tableA` ( `id` int, `name` varchar(30) ); insert into `tableA` ( `id`, `name` ) values ( 1, 'Pirate' ), ( 2, 'Monkey' ), ( 3, 'Ninja' ), ( 4, 'Spaghetti' );
+------+-----------+
| id | name |
+------+-----------+
| 1 | Pirate |
| 2 | Monkey |
| 3 | Ninja |
| 4 | Spaghetti |
+------+-----------+Таблица B:
create table `tableB` ( `id` int, `name` varchar(30) ); insert into `tableB` ( `id`, `name` ) values ( 1, 'Rutabaga' ), ( 2, 'Pirate' ), ( 3, 'Darth Vader' ), ( 4, 'Ninja' );
+------+-------------+
| id | name |
+------+-------------+
| 1 | Rutabaga |
| 2 | Pirate |
| 3 | Darth Vader |
| 4 | Ninja |
+------+-------------+1. INNER JOIN
select * from tableA inner join tableB on tableA.name = tableB.name;
+------+--------+------+--------+
| id | name | id | name |
+------+--------+------+--------+
| 1 | Pirate | 2 | Pirate |
| 3 | Ninja | 4 | Ninja |
+------+--------+------+--------+Выбираются строки из таблицы A и B, в которых есть одинаковые ключевые значения и в таблице A и в таблице B.
