Self Join ist wie ein innerer Join, bei dem zwei oder mehr Instanzen derselben Tabelle durch eine gemeinsame Datentypspalte/-feld miteinander verbunden werden. Ein solcher Join (Inner Join) liefert die gemeinsamen Zeilen als Ergebnis, basierend auf der Join-Bedingung.
Die Mitarbeitertabelle enthält drei Datensätze. In diesem Fall
Angestellter als Angestellter:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Mitarbeiter als Manager:
+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+
Jetzt Erster Fall:Versuchen wir Folgendes, um den Unterschied zu verstehen:
WÄHLEN Sie emp.*
, manager.*
FROM Mitarbeiter als emp, Mitarbeiter als 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 |
+----------+----------+------------+----------+----------+------------+
Siehe emp.id =manager.manager_id . So gibt emp.employee als NAME Zeilen von Ola aus der ersten Tabelle und manager.employee als MANAGER gibt Zeilen von Ahmed &Tove aus der zweiten Tabelle.
Nun Zweiter Fall:Versuchen wir Folgendes, um den Unterschied zu verstehen:
WÄHLEN Sie emp.*
, manager.*
FROM Mitarbeiter als Angestellter, Angestellter als 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 |
+----------+----------+------------+----------+----------+------------+
Siehe manager.id =emp.manager_id . So gibt emp.employee als NAME Zeilen von Ahmed &Tove aus der ersten Tabelle und manager.employee als MANAGER gibt Zeilen von Ola aus der zweiten Tabelle.