我正在开发一个小应用程序来管理人员及其关系。人与人之间的互惠关系
我创建了一个关于像婚姻和兄弟姐妹一样的“关卡”关系的模型。为了代表父母和孩子,我使用自引用字段。
这背后的想法是,有个人之间的互惠关系不违反任何NF的,并避免重复。
我的问题是,查询获取所有与个人相关的人都很复杂,因为使用正常的连接,相应的人员也会在结果集中。
有没有方法可以查询所有与人员A相关的人员,而无需在结果集中存在人员A?
有更好的方式来表示相互关系吗?
我正在开发一个小应用程序来管理人员及其关系。人与人之间的互惠关系
我创建了一个关于像婚姻和兄弟姐妹一样的“关卡”关系的模型。为了代表父母和孩子,我使用自引用字段。
这背后的想法是,有个人之间的互惠关系不违反任何NF的,并避免重复。
我的问题是,查询获取所有与个人相关的人都很复杂,因为使用正常的连接,相应的人员也会在结果集中。
有没有方法可以查询所有与人员A相关的人员,而无需在结果集中存在人员A?
有更好的方式来表示相互关系吗?
只需使用where
子句从结果集中筛选出人员A.自加入persons_relationships表本身,在一个实例滤波人A(x的ID),并从另一个排除同一个人:
select
pr2.person_id
from
persons_relationships pr1
inner join
persons_relationships pr2 on pr1.relationship_id=pr2.relationship_id
where
pr1.person_id=x and pr2.person_id<>x;
只是一个提示。只是放弃愚蠢的图像几乎没有帮助。我们需要'show create table xyz'的输出,其中xyz是相关的表格。然后一些示例数据和一些预期结果。人们在伪造数据的专栏中这样做。令人敬畏的人用SQLFiddle做这件事,并分享这个网址,这样我们就不必为了你而浪费我们所有的时间。当你不这样做的时候,我们逃跑并没有帮助。所以,这是对于为什么在一半时间内没有解决的问题你可以考虑的建设性批评。 – Drew
@德鲁当我写这个问题时没有想过这个工具。我为问题和答案都添加了一个SQL小提琴。感谢您的建设性反馈。 – berkyl
我很抱歉听起来像个混蛋。只是希望人们得到他们的答案。 :p – Drew