sql >> Database >  >> RDS >> Mysql

Zelf deelnemen begrijpen

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.



  1. Highchart- PHP, MYSQL en jQuery.get gebruiken om gegevens te ontleden

  2. Kan ik COUNT() en DISTINCT samen gebruiken?

  3. MySQL-pad ophalen in opdrachtprompt

  4. Vernieuw een gerealiseerde weergave automatisch met behulp van een regel of melding