Показаны сообщения с ярлыком sql. Показать все сообщения
Показаны сообщения с ярлыком sql. Показать все сообщения

воскресенье, 29 января 2012 г.

Визуальное представление SQL запросов с JOIN

Использование JOIN в SQL запросах гораздо проще понять если отобразить их в диаграммах Эйлера-Венна. Когда я изучал SQL мне попались только англоязычные материалы. Ligaya Turmelle и Jeff Atwood. Надеюсь этот материал поможет русскоязычным коллегам.

Для экспериментов используется две таблицы.
Таблица А:
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.