人之间的互惠关系

时间:2016-06-28 13:45:40

标签: php mysql database doctrine-orm

我正在开发一个小应用程序来管理人员及其关系。

我在婚姻和兄弟姐妹的同一“级别”创建了一个关系模型。为了代表父母和孩子,我使用自引用字段。

SQL Fiddle

EER

这背后的想法是,在不违反任何NF的情况下建立人与人之间的互惠关系并避免重复。

我的问题是,获取与一个人相关的所有人的查询很复杂,因为通过正常连接,相应的人也会在结果集中。

有没有办法在结果集中没有人A的情况下查询与A人相关的所有人?

有没有更好的方式来表示互惠关系?

1 个答案:

答案 0 :(得分:1)

只需使用where子句从结果集中筛选出人员A.自己加入persons_relationships表,在一个实例中过滤人A(id为x),并从另一个实例中排除同一个人:

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;

Sample fiddle