Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Compreendendo a auto-inscrição


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.