Mysql
 sql >> Database >  >> RDS >> Mysql

Capire l'adesione personale

Il self join è come un inner join in cui due o più istanze della stessa tabella vengono unite insieme tramite una colonna/campo di tipo di dati comune. Tale join(inner join) fornisce come risultato le righe comuni, in base alla condizione di unione.

La tabella dei dipendenti contiene tre record. In questo caso,

dipendente come dipendente:

+-----+---------------+------------+
| id  | employee      | manager_id |
+-----+---------------+------------+
| 1   | Ola           |   NULL     |
| 2   | Ahmed         |    1       |
| 3   | Tove          |    1       |
+----------+----------+------------+

dipendente come dirigente:

+-----+---------------+------------+
| id  | employee      | manager_id |
+-----+---------------+------------+
| 1   | Ola           |   NULL     |
| 2   | Ahmed         |    1       |
| 3   | Tove          |    1       |
+----------+----------+------------+

Ora Primo caso:proviamo questo per capire la differenza:

SELEZIONA emp.* , manager.* DA dipendente come emp, dipendente come managerWHERE 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       |
+----------+----------+------------+----------+----------+------------+

Vedi, emp.id =manager.manager_id . Pertanto, emp.employee come NAME fornisce righe di Ola dalla prima tabella e manager.employee come MANAGER fornisce righe di Ahmed &Tove dalla seconda tabella.

Ora Secondo caso:proviamo questo per capire la differenza:

SELEZIONA emp.* , manager.* DA dipendente come emp, impiegato come managerWHERE 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     |
+----------+----------+------------+----------+----------+------------+

Vedi, manager.id =emp.manager_id . Pertanto, emp.employee come NAME fornisce righe di Ahmed &Tove dalla prima tabella e manager.employee come MANAGER fornisce righe di Ola dalla seconda tabella.