Sprzężenie własne jest podobne do sprzężenia wewnętrznego, w którym co najmniej dwa wystąpienia tej samej tabeli są połączone ze sobą za pomocą wspólnej kolumny/pola typu danych. Takie złączenie (złączenie wewnętrzne) daje jako wynik wspólne wiersze, w oparciu o warunek złączenia.
Tabela pracowników zawiera trzy rekordy. W takim przypadku
pracownik jako emp:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
pracownik jako kierownik:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Teraz pierwszy przypadek:spróbujmy zrozumieć różnicę:
WYBIERZ emp.*
, manager.*
OD pracownik jako emp, pracownik jako menedżerGDZIE emp.id =manager.manager_id
+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 1 | Ola | NULL | 2 | Ahmed | 1 |
| 1 | Ola | NULL | 3 | Tove | 1 |
+----------+----------+------------+----------+----------+------------+
Zobacz, emp.id =manager.manager_id . Tak więc emp.employee jako NAZWA podaje wiersze z Olą z pierwszego stołu i manager.employee jako MANAGER daje wiersze z Ahmedem i Tove z drugiego stołu.
Teraz drugi przypadek:spróbujmy zrozumieć różnicę:
WYBIERZ emp.*
, manager.*
OD pracownika jako emp, pracownika jako managerGDZIE manager.id =emp.manager_id
+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 2 | Ahmed | 1 | 1 | Ola | NULL |
| 3 | Tove | 1 | 1 | Ola | NULL |
+----------+----------+------------+----------+----------+------------+
Zobacz manager.id =emp.manager_id . Tak więc emp.employee jako NAZWA podaje rzędy Ahmeda i Tove z pierwszego stołu, a manager.employee jako MANAGER daje rzędy Oli z drugiego stołu.