Self join is als een inner join waarbij twee of meer instanties van dezelfde tabel worden samengevoegd via een gemeenschappelijk gegevenstype kolom/veld. Een dergelijke join (inner join) geeft de gemeenschappelijke rijen als resultaat, gebaseerd op de samenvoegingsvoorwaarde.
De werknemerstabel bevat drie records. In dit geval,
werknemer als werknemer:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
medewerker als manager:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Nu het eerste geval:laten we dit proberen om het verschil te begrijpen:
SELECTEER emp.*
, manager.*
VAN werknemer als werknemer, werknemer als managerWHERE werknemer.id =manager.manager_id
+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 1 | Ola | NULL | 2 | Ahmed | 1 |
| 1 | Ola | NULL | 3 | Tove | 1 |
+----------+----------+------------+----------+----------+------------+
Zie, emp.id =manager.manager_id . Dus, emp.employee als NAAM geeft rijen van Ola van de eerste tafel en manager.employee als MANAGER rijen van Ahmed &Tove van de tweede tafel geeft.
Nu tweede geval:laten we dit proberen om het verschil te begrijpen:
SELECTEER emp.*
, manager.*
VAN werknemer als werknemer, werknemer als managerWHERE manager.id =werknemer.manager_id
+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 2 | Ahmed | 1 | 1 | Ola | NULL |
| 3 | Tove | 1 | 1 | Ola | NULL |
+----------+----------+------------+----------+----------+------------+
Zie, manager.id =werkn.manager_id . Dus, emp.employee als NAAM geeft rijen van Ahmed &Tove van de eerste tafel en manager.employee als MANAGER rijen van Ola geeft van de tweede tafel.