A autojunção é como uma junção interna em que duas ou mais instâncias da mesma tabela são unidas por meio de uma coluna/campo de tipo de dados comum. Tal join(inner join) fornece as linhas comuns como resultado, com base na condição de junção.
A tabela de funcionários contém três registros. Nesse caso,
funcionário como emp:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
funcionário como gerente:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Agora, primeiro caso:vamos tentar isso para entender a diferença:
SELECIONE
emp.*
, manager.*
FROM empregado como emp, empregado como gerenteWHERE 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 |
+----------+----------+------------+----------+----------+------------+
Consulte emp.id =manager.manager_id . Assim, emp.employee como NAME está fornecendo linhas de Ola da primeira tabela e manager.employee como MANAGER está fornecendo linhas de Ahmed &Tove da segunda tabela.
Agora, segundo caso:vamos tentar isso para entender a diferença:
SELECIONE
emp.*
, manager.*
FROM empregado como emp, empregado como gerenteWHERE 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 |
+----------+----------+------------+----------+----------+------------+
Veja, manager.id =emp.manager_id . Assim, emp.employee como NAME está fornecendo linhas de Ahmed &Tove da primeira tabela e manager.employee como MANAGER está fornecendo linhas de Ola da segunda tabela.