Condividi tramite


Sottoquery con alias

Molte istruzioni in cui la sottoquery e la query esterna fanno riferimento alla stessa tabella possono essere formulate come self-join, ovvero join che uniscono una tabella a se stessa. Ad esempio, è possibile trovare indirizzi di dipendenti di un particolare stato utilizzando una sottoquery:

USE AdventureWorks2008R2;
GO
SELECT StateProvinceID, AddressID
FROM Person.Address
WHERE AddressID IN
    (SELECT AddressID
     FROM Person.Address
     WHERE StateProvinceID = 39)

Set di risultati:

StateProvinceID AddressID

----------- -----------

39 942

39 955

39 972

39 22660

(Righe interessate: 4)

In alternativa, è possibile utilizzare un self-join:

USE AdventureWorks2008R2;
GO
SELECT e1.StateProvinceID, e1.AddressID
FROM Person.Address AS e1
INNER JOIN Person.Address AS e2
ON e1.AddressID = e2.AddressID
AND e2.StateProvinceID = 39;

È necessario specificare gli alias delle tabelle in quanto la tabella unita in join assume due ruoli diversi. È inoltre possibile utilizzare gli alias nelle query nidificate in cui in una query interna e in una esterna viene fatto riferimento alla stessa tabella.

USE AdventureWorks2008R2;
GO
SELECT e1.StateProvinceID, e1.AddressID
FROM Person.Address AS e1
WHERE e1.AddressID IN
    (SELECT e2.AddressID
     FROM Person.Address AS e2
     WHERE e2.StateProvinceID = 39)

Gli alias espliciti evidenziano in modo chiaro che un riferimento alla tabella Person.Address nella sottoquery non corrisponde al riferimento incluso nella query esterna.

Vedere anche

Concetti