Sql查询以获取联系人的孩子的朋友,他们是用户的孩子的朋友

时间:2018-04-23 07:41:12

标签: sql postgresql

我有以下表格

.flex-grow-zero {
  flex-grow: 0 !important;
}

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.0/css/bootstrap.css" rel="stylesheet"/> <nav class="mb-1 navbar navbar-expand-sm navbar-light fixed-top justify-content-center"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarSupportedContent-5"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse flex-grow-zero" id="navbarSupportedContent-5" style=""> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#"> Features </a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> </ul> </div> </nav>UserContact /*Saves the user and his contacts information*/ user_id | contact_id AdultChild /*Saves information about a user and his children*/ user_id. | child_id UserFriends /*Saves information about a child and his friends*/ child_id | friend_id user_id引用child_id。联系人和用户的子项存储在friend_id表中。同样,联系人子女和用户子女的朋友也存储在UserTable表中。

对于AdultChild表,有一种方法可以查询作为用户子女朋友的联系人朋友的所有朋友。

我尝试了以下查询

UserFriend

1 个答案:

答案 0 :(得分:0)

你走了:

select cf.friend_id
  from user_contact c
  join adult_child cc on cc.user_id = c.contact_id
  join user_friends cf on cf.child_id = cc.child_id
  join adult_child uc on uc.user_id = c.user_id
  join user_friends uf on uf.child_id = uc.child_id
  where c.user_id = 19061
    and cf.friend_id = uf.friend_id;

假设你的表是这样的:

create table user_table (
  user_id int primary key not null, 
  name varchar(20)
);

create table user_contact (
  user_id int, 
  contact_id int,
  constraint fk1 foreign key (user_id) references user_table (user_id),
  constraint fk2 foreign key (contact_id) references user_table (user_id)
);

create table adult_child (
  user_id int, 
  child_id int,
  constraint fk1 foreign key (user_id) references user_table (user_id),
  constraint fk2 foreign key (child_id) references user_table (user_id)
);

create table user_friends (
  child_id int, 
  friend_id int,
  constraint fk1 foreign key (child_id) references user_table (user_id),
  constraint fk2 foreign key (friend_id) references user_table (user_id)
);