sql >> Databasteknik >  >> RDS >> Sqlserver

Hierarkiska frågor i SQL Server 2005

Detta skapar din typiska hierarkiska tabell och använder en CTE för att välja hierarkistrukturen och skapa en sökväg för varje objekt.

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

UTGÅNG:

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. Tidsgränsen för att få lås väntan har överskridits; försök starta om transaktionen trots att jag inte använder en transaktion

  2. Hur jag skapar installationsprogram för webbplatsen. PHP mysql

  3. Kör MariaDB i en hybrid molninstallation

  4. MySQL:flera tabeller eller en tabell med många kolumner?