Examen de la estructura actual de la tabla Empleado
La base de datos de ejemplo AdventureWorks2012 contiene una tabla llamada Employee en el esquema HumanResources. Para evitar cambiar la tabla original, este paso realiza una copia de la tabla Employee denominada EmployeeDemo. Para simplificar el ejemplo, copie solo cinco columnas de la tabla original. A continuación, consulte la tabla HumanResources.EmployeeDemo para examinar cómo los datos se estructuran en una tabla sin utilizar el tipo de datos hierarchyid.
Para copiar la tabla Employee
En una ventana del editor de consultas, ejecute el código siguiente para copiar la estructura y los datos de la tabla Employee en una nueva tabla denominada EmployeeDemo.
USE AdventureWorks ; GO SELECT EmployeeID, LoginID, ManagerID, Title, HireDate INTO HumanResources.EmployeeDemo FROM HumanResources.Employee ; GO
Para examinar la estructura y los datos de la tabla EmployeeDemo
Esta nueva tabla EmployeeDemo representa una tabla típica en una base de datos existente que podría desear migrar a una nueva estructura. En una ventana del editor de consultas, ejecute el código siguiente para mostrar cómo la tabla utiliza una autocombinación para mostrar las relaciones empleado/administrador:
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
El conjunto de resultados es el siguiente.
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 ...
Los resultados continúan hasta un total de 290 filas.
Observe que la cláusula ORDER BY hace que la lista de salida muestre juntos los informes directos de cada nivel de administración. Por ejemplo, los siete informes directos de MgrID 3 (roberto0) aparecen agrupados. Aunque no imposible, es mucho más difícil de agrupar a todos aquellos que crean informes para MgrID 3.
En la tarea siguiente, crearemos una nueva tabla con un tipo de datos hierarchyid y pasaremos los datos a la nueva tabla.