【发布时间】:2011-10-03 22:31:52
【问题描述】:
我有如下三张表:
主表
+----------+-------------+
| MasterId | MasterName |
+----------+-------------+
| 1 | Master 1 |
| 2 | Master 2 |
| 3 | Master 3 |
| 4 | Master 4 |
+----------+-------------+
子表
+----------+-------------+
| ChildId | ChildName |
+----------+-------------+
| 1 | Child 1 |
| 2 | Child 2 |
| 3 | Child 3 |
| 4 | Child 4 |
+----------+-------------+
链接表
+----------+-----------------------+
| Id | MasterId | ChldId |
+----------+-----------------------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 2 |
| 4 | 4 | 3 |
+----------+-----------------------+
一个孩子可以与多个主人链接,LinkTable 包含此详细信息。我想要一个查询来选择以下内容:
1, 'Child 1', 'Master 1, Master 2', '1,2'
2, 'Child 2', 'Master 2', '2'
3, 'Child 3', 'Master 3', '3'
是否可以不使用循环或调用附加函数,使用COALESCE、STUFF、递归CTE 等?
【问题讨论】:
-
为什么您的
LinkTable表包含两个重复的MasterId列? -
@S.Serpooshan 可能意味着该表的 ID。现在连这个都不记得了!
标签: sql tsql concatenation xquery sql-server-group-concat