Lezione 1-1: Esame della struttura corrente della tabella EmployeeLesson 1-1 - Examining the Current Structure of the Employee Table

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Il database di esempio AdventureWorks2012AdventureWorks2012 (o versione successiva) contiene una tabella Employee nello schema HumanResources.The sample AdventureWorks2012AdventureWorks2012 (or later) database contains an Employee table in the HumanResources schema. Per evitare di modificare la tabella originale, in questo passaggio viene creata una copia della tabella Employee denominata EmployeeDemo.To avoid changing the original table, this step makes a copy of the Employee table named EmployeeDemo. Per semplificare l'esempio, copiare solo cinque colonne della tabella originale.To simplify the example, you only copy five columns from the original table. Eseguire quindi una query sulla tabella HumanResources.EmployeeDemo per esaminare il modo in cui viene strutturata una tabella senza usare il tipo di dati hierarchyid .Then, you query the HumanResources.EmployeeDemo table to review how the data is structured in a table without using the hierarchyid data type.

Per copiare la tabella EmployeeTo copy the Employee table

  1. 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.In a Query Editor window, run the following code to copy the table structure and data from the Employee table into a new table named EmployeeDemo. Poiché la tabella originale usa già hierarchyid, questa query essenzialmente rende flat la gerarchia per recuperare il manager del dipendente.Since the original table already uses hierarchyid, this query essentially flattens the hierarchy to retrieve the manager of the employee. Nelle parti successive di questa lezione questa gerarchia verrà ricostruita.In subsequent parts of this lesson we will be reconstructing this hierarchy.

    USE AdventureWorks ;  
    GO  
    
    SELECT emp.BusinessEntityID AS EmployeeID, emp.LoginID, 
      (SELECT  man.BusinessEntityID FROM HumanResources.Employee man 
            WHERE emp.OrganizationNode.GetAncestor(1)=man.OrganizationNode OR 
                (emp.OrganizationNode.GetAncestor(1) = 0x AND man.OrganizationNode IS NULL)) AS ManagerID
        , emp.JobTitle, emp.HireDate
    INTO HumanResources.EmployeeDemo   
    FROM HumanResources.Employee emp ;
    GO
    

Per esaminare la struttura e i dati della tabella EmployeeDemoTo examine the structure and data of the EmployeeDemo table

  • Questa nuova tabella EmployeeDemo rappresenta una tabella tipica di un database esistente di cui si può eseguire la migrazione a una struttura nuova.This new EmployeeDemo table represents a typical table in an existing database that you might want to migrate to a new structure. 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:In a Query Editor window, run the following code to show how the table uses a self join to display the employee/manager relationships:

    SELECT   
        Mgr.EmployeeID AS MgrID, Mgr.LoginID AS Manager,   
        Emp.EmployeeID AS E_ID, Emp.LoginID, Emp.JobTitle  
    FROM HumanResources.EmployeeDemo AS Emp  
    LEFT JOIN HumanResources.EmployeeDemo AS Mgr  
    ON Emp.ManagerID = Mgr.EmployeeID  
    ORDER BY MgrID, E_ID  
    

    Set di risultati:Here is the result set.

    MgrID Manager                 E_ID LoginID                  JobTitle  
    NULL    NULL    1   adventure-works\ken0    Chief Executive Officer
    1   adventure-works\ken0    2   adventure-works\terri0  Vice President of Engineering
    1   adventure-works\ken0    16  adventure-works\david0  Marketing Manager
    1   adventure-works\ken0    25  adventure-works\james1  Vice President of Production
    1   adventure-works\ken0    234 adventure-works\laura1  Chief Financial Officer
    1   adventure-works\ken0    263 adventure-works\jean0   Information Services Manager
    1   adventure-works\ken0    273 adventure-works\brian3  Vice President of Sales
    2   adventure-works\terri0  3   adventure-works\roberto0    Engineering Manager
    3   adventure-works\roberto0    4   adventure-works\rob0    Senior Tool Designer
    ...  
    

    Viene generato un totale di 290 righe di risultati.The results continue for a total of 290 rows.

Con la clausola ORDER BY , i report diretti di ogni livello di gestione vengono elencati insieme nell'output.Notice that the ORDER BY clause caused the output to list the direct reports of each management level together. Ad esempio, tutti i sette dipendenti diretti di MgrID 1 (ken0) vengono elencati uno accanto all'altro.For instance, all seven of the direct reports of MgrID 1 (ken0) are listed adjacent to each other. Anche se non impossibile, è molto più difficile raggruppare tutti coloro che in ultima istanza sono dipendenti di MgrID 1.Although not impossible, it is much more difficult to group all those who eventually report to MgrID 1.

Nell'attività successiva verrà creata una nuova tabella con un tipo di dati hierarchyid e verranno spostati i dati nella nuova tabella.In the next task, we will create a new table with a hierarchyid data type, and move the data into the new table.

Attività successiva della lezioneNext Task in Lesson

Popolamento di una tabella con dati gerarchici esistentiPopulating a Table with Existing Hierarchical Data