【问题标题】:Write Query in Parent Child like tree format像树格式一样以父子格式编写查询
【发布时间】:2021-01-10 08:31:45
【问题描述】:

我正在处理一个 MVC C# 项目,我的 SQL 查询有些复杂。我有三张桌子

  1. 客户
  2. 等级
  3. 关卡详情

两个表都有关系

Level 映射到 Level Details,Level Details 映射到 customer 和 Level

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

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

     Test          T1          TestCustomer

Child 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查询吗?

【问题讨论】:

  • 我正在使用 Sqlserver。我需要 sql 查询中的父子树格式
  • 你可能想要一个递归 CTE。
  • @Dotnet 我已经添加了一个答案,但我认为最好的办法是在代码后面处理这种业务。

标签: sql sql-server asp.net-mvc stored-procedures common-table-expression


【解决方案1】:

我用 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 上上传了 Create Table 和 Insert Mock 数据:

https://github.com/mghanatabady/SQL-Samples/blob/master/Write%20Query%20in%20Parent%20Child%20like%20tree%20format.SQL

【讨论】:

  • @Dotnet 如果我有错误,请告诉我,我可以改进或更改我的答案
猜你喜欢
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
相关资源
最近更新 更多