sql >> データベース >  >> RDS >> Sqlserver

複数の親を持つ子に対して、親子レコードを返す SQL Server 2005 CTE を作成する方法

    CTE の構文エラーを修正すると、これは問題なく動作するように見えます:

    create table #ParentChildTable 
    (nodeID int not null
    ,parentNodeID int not null
    )
    
    insert #ParentChildTable 
    select 900,56
    union all select 900,123
    union all select 123,439
    union all select 56,439
    union all select 439,0
    
    ;WITH Heirarchy
    AS
    (
        SELECT 
            T1.NodeID,
              T1.ParentNodeID
        FROM
            #ParentChildTable T1
        WHERE
            T1.NodeID = 439
    
        UNION ALL
        SELECT 
            T1.NodeID,
            T1.ParentNodeID
        FROM
            #ParentChildTable T1
            INNER JOIN Heirarchy TH ON TH.NodeID = T1.ParentNodeID
    )
    select *
    from Heirarchy
    

    結果を返します:

    NodeID      ParentNodeID
    ----------- ------------
    439         0
    123         439
    56          439
    900         56
    900         123
    


    1. PHPでMySQLとデータベースのエラーをキャッチする方法はありますか?

    2. エラーの修正mysqlサーバーがなくなりました

    3. 複数の行を返すサブクエリ

    4. 新しい列を追加した後、SQLServerの列名が無効です