【发布时间】:2017-09-18 20:00:21
【问题描述】:
我的源数据库中有一个表,该表将一个人与他的妻子/丈夫和他们的孩子(如果他们有的话)联系起来。
与孩子的关系可以通过妻子或丈夫,但只有一个成年人与孩子的关系,夫妻之间只有一种关系。与配偶的关系与与子女的关系不一定是同一个成年人。
我想创建一个输出,其中包含每个人和他们家庭的唯一 ID。但我似乎无法理解如何获得结果。
下面是我的源数据示例。
+--------+------+
| FromID | ToID |
+--------+------+
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
| 5 | 6 |
| 6 | 7 |
| 8 | 9 |
+--------+------+
CREATE TABLE [dbo].[Relations](
[FromID] [int] NULL,
[ToID] [int] NULL
)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (1, 2)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (2, 3)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (2, 4)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (5, 6)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (6, 7)
INSERT [dbo].[Relations] ([FromID], [ToID]) VALUES (8, 9)
在此示例数据中:
- 第 1 个人与第 2 个人结婚,第 2 个人有 2 个孩子 (3,4)(4 口之家)
- 第 5 个人与第 6 个人结婚,第 6 个人有 1 个孩子 (7)(3 口之家)
- 第 8 个人与第 9 个人结婚,没有孩子(2 口之家)
下面是想要的结果:
+----------+----------+
| PersonID | FamilyID |
+----------+----------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 2 |
| 6 | 2 |
| 7 | 2 |
| 8 | 3 |
| 9 | 3 |
+----------+----------+
【问题讨论】:
-
您的示例数据确实很有意义。您在 ToID 中有不存在的值。也许您需要查看这篇文章,以了解有关您应该发布的内容的一些好主意。 spaghettidba.com/2015/04/24/…
-
以文本形式发布表格和数据READ THIS
-
你有桌子
Persons吗?你试过递归查询吗? -
是否有任何 SQL 尝试显示您的努力?
-
你还需要确定你想去多少关系。由于您没有记录关系类型,因此您将无法确定配偶与子女。
标签: sql sql-server tsql parent-child recursive-query