Self join är som en inre join där två eller flera instanser av samma tabell är sammanfogade genom en gemensam datatyp kolumn/fält. Sådan join(inner join) ger de gemensamma raderna som resultat, baserat på sammanfogningsvillkoret.
Personaltabellen innehåller tre poster. I det här fallet,
anställd som anställd:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
anställd som chef:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Nu första fallet:Låt oss prova detta för att förstå skillnaden:
VÄLJ emp.*
, manager.*
FRÅN anställd som anställd, anställd som chefWHERE 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 |
+----------+----------+------------+----------+----------+------------+
Se, emp.id =manager.manager_id . Således ger anställd som NAMN rader av Ola från första bordet &chef.anställd som MANAGER ger rader av Ahmed &Tove från andra bordet.
Nu andra fallet:Låt oss prova detta för att förstå skillnaden:
VÄLJ emp.*
, manager.*
FRÅN anställd som anställd, anställd som chefWHERE 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 |
+----------+----------+------------+----------+----------+------------+
Se, manager.id =emp.manager_id . Således ger anställd som NAMN rader av Ahmed &Tove från första bordet &chef.anställd som MANAGER ger rader av Ola från andra bordet.