Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在CRM项目中建立联系人之间的家庭关系_C#_Sql Server_Sql Server 2008_Tree - Fatal编程技术网

C# 在CRM项目中建立联系人之间的家庭关系

C# 在CRM项目中建立联系人之间的家庭关系,c#,sql-server,sql-server-2008,tree,C#,Sql Server,Sql Server 2008,Tree,我想在联系人之间建立家庭关系,并发现联系人之间隐藏的关系,并在sql server中使用递归进行显示。 例如: 我的这张表包含: User_id_1 User_id_2 relation 1 2 Parent-child 2 3 Brother-brother 3 4 Brother-brother 我的存储过程应该发现特定用户id的所有关系。 如果使用用户_id=4

我想在联系人之间建立家庭关系,并发现联系人之间隐藏的关系,并在sql server中使用递归进行显示。 例如: 我的这张表包含:

User_id_1   User_id_2   relation
1           2           Parent-child
2           3           Brother-brother
3           4           Brother-brother
我的存储过程应该发现特定用户id的所有关系。 如果使用用户_id=4调用此sp, 它应该给我所有用户的关系_id=4 它应该知道4比3和2是兄弟, 1是4的父母。
如何做到这一点?

您可以从另外两个表开始,一个用于配置关系(类似于当前的
关系
列),另一个用于配置在递归查找过程中遍历哪些关系

Table: Relationship
Id: int
Description: string

Table: RelationshipToRelationship
FromRelationshipId: int
ToRelationshipId: int
数据如下所示:

关系

Id   Description
==   ===============
1    Brother-Brother
2    Parent-Child
FromRelationshipId   ToRelationshipId 
==================   ================
1                    1
1                    2
关系与关系

Id   Description
==   ===============
1    Brother-Brother
2    Parent-Child
FromRelationshipId   ToRelationshipId 
==================   ================
1                    1
1                    2
如果/当我解决它时,将使用可行的查询进行更新

我预见的问题:

  • 您提出了最简单的案例(我哥哥的父母是我的父母),但在其他案例中(我哥哥的孩子不是我的孩子)出现了问题
  • 标记关系时出现类似问题(您可以将我兄弟的父母标记为我的
    父子
    ,但您兄弟的孩子需要标记为
    兄弟-兄弟-父子

一切都很快变得混乱起来。您是否最好在希望关联的每一方之间保持直接关系(即,表中的另外两条记录将用户4&2链接为兄弟,4&1链接为父子)?

您可以从另外两个表开始,1配置关系(类似于您当前的
关系
列)另一个用于配置在递归查找过程中遍历哪些关系

Table: Relationship
Id: int
Description: string

Table: RelationshipToRelationship
FromRelationshipId: int
ToRelationshipId: int
数据如下所示:

关系

Id   Description
==   ===============
1    Brother-Brother
2    Parent-Child
FromRelationshipId   ToRelationshipId 
==================   ================
1                    1
1                    2
关系与关系

Id   Description
==   ===============
1    Brother-Brother
2    Parent-Child
FromRelationshipId   ToRelationshipId 
==================   ================
1                    1
1                    2
如果/当我解决它时,将使用可行的查询进行更新

我预见的问题:

  • 您提出了最简单的案例(我哥哥的父母是我的父母),但在其他案例中(我哥哥的孩子不是我的孩子)出现了问题
  • 标记关系时出现类似问题(您可以将我兄弟的父母标记为我的
    父子
    ,但您兄弟的孩子需要标记为
    兄弟-兄弟-父子

一切都很快变得混乱起来。您是否最好在希望关联的每一方之间保持直接关系(即,您表中的另外两条记录将用户4&2链接为兄弟,4&1链接为父子)?

ok thx,,但我需要一种递归技术,使用sql server中的函数和Sps获取我想要知道的特定用户的所有关系?我的意思是在第一条记录中,1是2的父项,另一条记录表示2是3的兄弟,3是4的兄弟,,我想在我的存储过程中做什么,当我调用具有4个用户id的存储过程时,它将返回与4=>answer(1,2,3)相关的所有用户,它应该步进throw table并给我所有连接到此用户的用户id?好的,thx,,但我需要一种递归技术,使用sql server中的函数和Sps获取我想要知道的特定用户的所有关系?我的意思是在第一条记录中,1是2的父项,另一条记录表示2是3的兄弟,3是4的兄弟,,在我的存储过程中,我想做什么,当我调用具有4个用户id的存储过程时,它将返回与4=>answer(1,2,3)相关的所有用户,它应该步骤throw table并给我连接到此用户的所有用户id?