sql >> Base de Datos >  >> RDS >> Mysql

Comprender la autounión

La unión automática es como una unión interna donde dos o más instancias de la misma tabla se unen a través de una columna/campo de tipo de datos común. Dicha unión (unión interna) da como resultado las filas comunes, según la condición de unión.

La tabla de empleados contiene tres registros. En este caso,

empleado como emp:

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

empleado como gerente:

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

Ahora primer caso:intentemos esto para entender la diferencia:

SELECCIONE emp.* , manager.* FROM empleado como emp, empleado como gerente DONDE 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       |
+----------+----------+------------+----------+----------+------------+

Ver, emp.id =manager.manager_id. Por lo tanto, emp.employee como NOMBRE está dando filas de Ola de la primera mesa y manager.employee como GERENTE está dando filas de Ahmed &Tove de la segunda mesa.

Ahora segundo caso:intentemos esto para entender la diferencia:

SELECCIONE emp.* , manager.* FROM empleado como emp, empleado como gerente DONDE gerente.id =emp.manager_id

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

Ver, manager.id =emp.manager_id. Por lo tanto, emp.employee como NOMBRE está dando filas de Ahmed &Tove de la primera mesa y manager.employee como GERENTE está dando filas de Ola de la segunda mesa.