Duplicar posibles:
sql: self-joins explained¿Qué es SELF JOIN y cuándo lo usarías?
Lo que se unen a uno mismo y cuando lo uso? No entiendo que yo me una, entonces una explicación para un profano con un ejemplo sería genial.
Duplicar posibles:
sql: self-joins explained¿Qué es SELF JOIN y cuándo lo usarías?
Lo que se unen a uno mismo y cuando lo uso? No entiendo que yo me una, entonces una explicación para un profano con un ejemplo sería genial.
Utiliza una autocombinación cuando una tabla hace referencia a datos en sí misma.
P. ej., 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 tanto para las personas en una fila, usted podría 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
Un auto se unen es simplemente cuando se une a una mesa con ella misma. No existe la palabra clave SELF JOIN
, solo escribe una unión ordinaria en la que ambas tablas involucradas en la combinació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'
Encantador de ver este comentario .. ON T2.parent = T1.id (porque afecta el resultado si intercambiamos 'padre' e 'id' en él) – himanshupareek66
Es bueno mencionar que no existe la palabra clave 'SELF JOIN'. ¡Estaba confundido acerca de esa parte! – nclsvh
Utilizará una autocombinación en una tabla que "se refiera" a sí misma, p. Ej. una tabla de empleados donde managerid es una clave externa para employeeid en esa misma tabla.
Ejemplo:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
EN ME.employeeid = E.managerid creará un resultado diferente en lugar de ON ME.managerid = E.employeeid – himanshupareek66
SQL autocombinación simplemente es unirse a una normal, que se utiliza para unirse a una mesa a sí mismo.
Ejemplo:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
¿No sería más seguro usar 'SELECT t1. *' Para evitar duplicar los nombres de las columnas en el resultado? – Matthieu
Bueno, un ejemplo clásico es donde quería obtener una lista de los 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
Se utiliza básicamente en que existe alguna relación entre las hileras almacenado en la misma mesa
Y así sucesivamente ...
Boo para sintaxis no ANSI y utilizando ordinal en la cláusula 'ORDER BY' en lugar de un nombre de columna. – RedFilter
Boo de vuelta a usted por haber perdido el sentido de la respuesta :-) Tiendo a utilizar la sintaxis más simple que funciona ya que el buen DBMS 'no permitirá que eso afecte el rendimiento. – paxdiablo
mejor respuesta hasta ahora ... :) –
que parece un auto exterior se unen a mí? –
@JoeCaruso Eso es porque lo es;) – RedFilter
Me pregunto por qué nadie enfatiza la parte "en la misma fila". ¿No es ese el punto de hacer una auto unión? –