Sql 以类父子树格式编写查询

Sql 以类父子树格式编写查询,sql,sql-server,asp.net-mvc,stored-procedures,common-table-expression,Sql,Sql Server,Asp.net Mvc,Stored Procedures,Common Table Expression,我正在从事一个MVC项目,我的SQL查询有些复杂。我有三张桌子 顾客 水平仪 LevelDetails 两个表都有关系 级别映射到级别详细信息,级别详细信息映射到客户和级别 我想以树格式显示数据,例如: 父项:客户名称CustomerId客户类型 Test T1 TestCustomer 子Levelid Leveldesc城市状态 L1 L1desc C1 S1 L2 L2desc

我正在从事一个MVC项目,我的SQL查询有些复杂。我有三张桌子

  • 顾客
  • 水平仪
  • LevelDetails
  • 两个表都有关系

    级别映射到级别详细信息,级别详细信息映射到客户和级别

    我想以树格式显示数据,例如:

    父项:客户名称CustomerId客户类型

         Test          T1          TestCustomer
    
    子Levelid Leveldesc城市状态

          L1       L1desc     C1    S1
    
          L2       L2desc     C2    S2
    
    逻辑是当我单击父级时,它会显示子级

    我试着回答这个问题

    select LD.Level_Rid, LD.Customer_Rid, LD.Level_Detail_Rid, L.Level_Id, L.Level_Description, L.Country, L.State, L.City, L.Area, CU.Customer_Name, CU.Customer_Type
    FROM [dbo].[Level] L
    INNER JOIN [dbo].[Level_Detail] LD ON R.Level_Rid = RD.Level_Rid 
    INNER JOIN [dbo].[Customer] CU ON LD.Customer_Rid = CU.Customer_Rid
    
    可以使用SQL查询吗


    我用cte编写了这个查询:

    WITH cte_cu as 
     ( select Customer_Rid from  [dbo].[Customer] as cU )
    --select * from  cte_cu where CustomerRid = CustomerRid
    select Customer_Rid, 1 orderKeeper,Customer_Name as CustomerName ,[State] as [State],City,Customer_id from  [dbo].[Customer]  where Customer_Rid = Customer_Rid
    union
    select Customer_Rid,2,'LevelId' as Customer_Name ,'LevelDescription' ,'','' from  [dbo].[Customer]
    union
    select Customer_Rid,3,Level_Id as Customer_Name ,Level_Description,'','' 
    FROM [dbo].[Level_Detail] LD 
    inner join dbo.[Level] as L on LD.Level_Rid = L.Level_Rid 
    where LD.Customer_Rid = Customer_Rid
    
    结果:

    我在git hub上上传了创建表和插入模拟数据:


    我使用的是Sqlserver。我需要sql查询中的父子树格式您可能需要递归CTE。@Dotnet我添加了一个答案,但我认为最好的办法是用代码隐藏处理此类事务。@Dotnet如果我有错误,请告诉我,我可以改进或更改我的答案Thankyou@Ghanat。