Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytania hierarchiczne w SQL Server 2005

Tworzy to typową tabelę hierarchiczną i wykorzystuje CTE do wyboru struktury hierarchicznej i utworzenia ścieżki dla każdego elementu.

CREATE TABLE tblHierarchy (ID int, ParentID int NULL, Name varchar(128));

INSERT INTO tblHierarchy VALUES (1, NULL, '1');
INSERT INTO tblHierarchy VALUES (2, NULL, '2');
INSERT INTO tblHierarchy VALUES (3, NULL, '3');
INSERT INTO tblHierarchy VALUES (4, 1, '1.1');
INSERT INTO tblHierarchy VALUES (5, 1, '1.2');
INSERT INTO tblHierarchy VALUES (6, 4, '1.1.1');

WITH Parent AS
(
    SELECT
        ID,
        ParentID,
        Name AS Path
    FROM
        tblHierarchy
    WHERE
        ParentID IS NULL

    UNION ALL

    SELECT
        TH.ID,
        TH.ParentID,
        CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path
    FROM
        tblHierarchy TH
    INNER JOIN
        Parent
    ON
        Parent.ID = TH.ParentID
)
SELECT * FROM Parent

WYJŚCIE:

ID  ParentID    Path
1   NULL        1
2   NULL        2
3   NULL        3
4   1       1/1.1
5   1       1/1.2
6   4       1/1.1/1.1.1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz profil poczty bazy danych w programie SQL Server (T-SQL)

  2. Konwersja typu danych datetime2 na typ danych datetime wynika z wartości spoza zakresu

  3. Jak stworzyć bazę danych w SQL Server

  4. Nowe wydanie:pakiet dostrajania Spotlight 7.1.9

  5. Zapytanie indeksujące dotyczące odbudowy serwera SQL