Sql 以类父子树格式编写查询
我正在从事一个MVC项目,我的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
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。