Esame della struttura corrente della tabella Employee
Lo schema HumanResources del database di esempio AdventureWorks2012 contiene una tabella Employee. Per evitare di modificare la tabella originale, in questo passaggio viene creata una copia della tabella Employee denominata EmployeeDemo. Per semplificare l'esempio, copiare solo cinque colonne della tabella originale. Eseguire quindi una query sulla tabella HumanResources.EmployeeDemo per esaminare il modo in cui viene strutturata una tabella senza utilizzare il tipo di dati hierarchyid.
Per copiare la tabella Employee
In una finestra editor di query, eseguire il codice seguente per copiare la struttura della tabella e i dati della tabella Employee in una tabella nuova denominata EmployeeDemo.
USE AdventureWorks ; GO SELECT EmployeeID, LoginID, ManagerID, Title, HireDate INTO HumanResources.EmployeeDemo FROM HumanResources.Employee ; GO
Per esaminare la struttura e i dati della tabella EmployeeDemo
Questa nuova tabella EmployeeDemo rappresenta una tabella tipica di un database esistente di cui si può eseguire la migrazione a una struttura nuova. In una finestra editor di query, eseguire il codice seguente per visualizzare il modo in cui la tabella utilizza un self-join per visualizzare le relazioni dipendente/responsabile:
SELECT Mgr.EmployeeID AS MgrID, Mgr.LoginID AS Manager, Emp.EmployeeID AS E_ID, Emp.LoginID, Emp.Title FROM HumanResources.EmployeeDemo AS Emp LEFT JOIN HumanResources.EmployeeDemo AS Mgr ON Emp.ManagerID = Mgr.EmployeeID ORDER BY MgrID, E_ID
Set di risultati:
MgrID Manager E_ID LoginID Title NULL NULL 109 adventure-works\ken0 Chief Executive Officer 3 adventure-works\roberto0 4 adventure-works\rob0 Senior Tool Designer 3 adventure-works\roberto0 9 adventure-works\gail0 Design Engineer 3 adventure-works\roberto0 11 adventure-works\jossef0 Design Engineer 3 adventure-works\roberto0 158 adventure-works\dylan0 Research and Development Manager 3 adventure-works\roberto0 263 adventure-works\ovidiu0 Senior Tool Designer 3 adventure-works\roberto0 267 adventure-works\michael8 Senior Design Engineer 3 adventure-works\roberto0 270 adventure-works\sharon0 Design Engineer 6 adventure-works\david0 2 adventure-works\kevin0 Marketing Assistant ...
Viene generato un totale di 290 righe di risultati.
Con la clausola ORDER BY, i report diretti di ogni livello di gestione vengono elencati insieme nell'output. Ad esempio, tutti i sette report diretti di MgrID 3 (roberto0) vengono elencati uno accanto all'altro. Anche se non impossibile, è molto più difficile raggruppare tutti coloro che riportano a MgrID 3.
Nell'attività successiva, verrà creata una nuova tabella con un tipo di dati hierarchyid e verranno spostati i dati nella nuova tabella.