que - tipos de join mysql
¿Qué es SELF JOIN y cuándo lo usarías? (5)
Posible duplicado:
sql: autocombinaciones explicadas
¿Qué es auto unión y cuándo lo usarías? No entiendo que yo me una, entonces una explicación para un profano con un ejemplo sería genial.
Bueno, un ejemplo clásico es donde quería obtener una lista de empleados y sus gerentes inmediatos:
select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1
Básicamente se usa cuando existe una relación entre filas almacenadas en la misma tabla.
- empleados.
- comercialización de niveles múltiples.
- partes de máquina.
Y así...
SQL self-join es simplemente una combinación normal que se utiliza para unir una tabla a sí mismo.
Ejemplo:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
Una auto unión es simplemente cuando te unes a una mesa consigo mismo. No hay palabra clave SELF JOIN
, solo escribe una unión ordinaria donde ambas tablas involucradas en la unión son la misma tabla. Una cosa a tener en cuenta es que cuando se autoensambla es necesario usar un alias para la tabla; de lo contrario, el nombre de la tabla sería ambiguo.
Es útil cuando quiere correlacionar pares de filas de la misma tabla, por ejemplo, una relación padre-hijo. La siguiente consulta devuelve los nombres de todas las subcategorías inmediatas de la categoría ''Cocina''.
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = ''Kitchen''
Utiliza una autocombinación cuando una tabla hace referencia a datos en sí misma.
Por ejemplo, una tabla Employee
puede tener una columna SupervisorID
que apunta al empleado que es el jefe del empleado actual.
Para consultar los datos y obtener información para ambas personas en una fila, puede unirse a sí mismo de esta manera:
select e1.EmployeeID,
e1.FirstName,
e1.LastName,
e1.SupervisorID,
e2.FirstName as SupervisorFirstName,
e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
Utilizaría una autocombinación en una tabla que se "refiera" a sí misma; por ejemplo, una tabla de empleados donde managerid es una clave externa para employeeid en la misma tabla.
Ejemplo:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid