sql >> Databáze >  >> RDS >> Mysql

Pochopení Self Join

Vlastní spojení je jako vnitřní spojení, kde jsou dvě nebo více instancí stejné tabulky spojeny dohromady prostřednictvím sloupce/pole společného datového typu. Takové spojení (vnitřní spojení) dává jako výsledek společné řádky na základě podmínky spojení.

Tabulka zaměstnanců obsahuje tři záznamy. V tomto případě

zaměstnanec jako emp:

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

zaměstnanec jako manažer:

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

Nyní první případ:Zkusme toto, abychom pochopili rozdíl:

SELECT emp.* , manager.* OD zaměstnance jako emp, zaměstnance jako manažera KDE 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       |
+----------+----------+------------+----------+----------+------------+

Podívejte se, emp.id =manager.manager_id . Zaměstnanec jako JMÉNO tedy dává řádky Ola z prvního stolu a manager.employee jako MANAŽER dává řádky Ahmed &Tove z druhého stolu.

Teď Druhý případ:Zkusme toto, abychom pochopili rozdíl:

SELECT emp.* , manager.* OD zaměstnance jako emp, zaměstnanec jako manažer KDE 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     |
+----------+----------+------------+----------+----------+------------+

Viz manager.id =emp.manager_id . Zaměstnanec jako JMÉNO tedy dává řádky Ahmed &Tove z prvního stolu a manager.employee jako MANAŽER dává řádky Ola z druhého stolu.



  1. Přečtěte si e-mail imap php

  2. Vyhledávání MySQL ignoruje pomlčky

  3. MySQL:Převeďte INT na DATETIME

  4. JPA flush vs