Cos'è SELF JOIN e quando lo useresti?

Possibile duplicato: sql: self-join spiegato

Cos'è il self join e quando lo useresti? I don't capire auto join così una spiegazione laico con un esempio sarebbe grande.

Soluzione

Si usa un self join quando una tabella fa riferimento ai dati in se stessa.

Per esempio, una tabella Employee può avere una colonna SupervisorID che punta all'impiegato che è il capo dell'impiegato corrente.

Per interrogare i dati e ottenere informazioni per entrambe le persone in una riga, si potrebbe fare un self join come questo:

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
Commentari (5)

Un self join è semplicemente quando si unisce una tabella con se stessa. Non c'è nessuna parola chiave SELF JOIN, si scrive semplicemente una normale unione dove entrambe le tabelle coinvolte nell'unione sono la stessa tabella. Una cosa da notare è che quando si fa un'autocongiunzione è necessario usare un alias per la tabella, altrimenti il nome della tabella sarebbe ambiguo.

È utile quando si vogliono correlare coppie di righe della stessa tabella, per esempio una relazione genitore - figlio. La seguente query restituisce i nomi di tutte le sottocategorie immediate della categoria 'Cucina'.

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
Commentari (2)

Useresti una self-join su una tabella che si riferisce a se stessa - per esempio una tabella di dipendenti dove managerid è una chiave esterna a employeeid su quella stessa tabella.

Esempio:

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
Commentari (1)