Mysql
 sql >> база данни >  >> RDS >> Mysql

Разбиране на Self Join

Самообединяването е като вътрешно свързване, при което два или повече екземпляра на една и съща таблица са обединени заедно чрез общ тип данни, колона/поле. Такова присъединяване (вътрешно свързване) дава общите редове като резултат, въз основа на условието за свързване.

Таблицата на служителите съдържа три записа. В този случай,

служител като emp:

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

служител като ръководител:

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

Сега Първи случай:Нека опитаме това, за да разберем разликата:

ИЗБЕРЕТЕ emp.* , manager.* FROM служител като emp, служител като мениджърWHERE 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       |
+----------+----------+------------+----------+----------+------------+

Вижте, emp.id =manager.manager_id . По този начин emp.employee като NAME дава редове на Ola от първата маса, а manager.employee като MANAGER дава редове на Ahmed &Tove от втората таблица.

Сега втори случай:Нека опитаме това, за да разберем разликата:

ИЗБЕРЕТЕ emp.* , manager.* ОТ служител като emp, служител като мениджърWHERE 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     |
+----------+----------+------------+----------+----------+------------+

Вижте, manager.id =emp.manager_id . По този начин emp.employee като NAME дава редове на Ahmed &Tove от първата маса, а manager.employee като MANAGER дава редове на Ola от втората таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Изберете по най-ново времеви печат

  2. Случаен PHP FastCGI / Нулиране на връзката от партньорски / непълни заглавки

  3. Поръчайте артикули в MySQL по фиксиран списък?

  4. Как да се покаже диапазон от часове

  5. Добавяне на часове, минути, секунди към SQL дата