0

嗨,我有两张桌子PAS_UserPAS_Follow见下图,

涉及的 MySQL 表

我正在努力的是对 MySQL 的查询,其中用户只能看到其他用户的列表,其中他们之间的关系 id 是互惠的。

对于互惠(互惠)PAS_Follow表必须记录,所以假设我们有一个用户和 id of1和一个用户2的表 id 将包含两行数据,第 1 行是:

flow_follower_user_id = 1 && flow_followed_user_id = 2

第 2 行是

flow_follower_user_id = 2 && flow_followed_user_id = 1

我有这个查询,但它似乎显示没有关注源用户的用户。

SELECT DISTINCT PAS_Follow.folw_followed_user_id AS user_user_id, PAS_User.user_first_name, PAS_User.user_last_name, PAS_User.user_avatar_url, PAS_User.user_sector, PAS_User.user_job_type, PAS_User.user_pass_token FROM PAS_User RIGHT OUTER JOIN PAS_Follow ON PAS_User.user_user_id = PAS_Follow.folw_followed_user_id WHERE `folw_followed_user_id` =**:id** OR `folw_follower_user_id` =**:id** AND `folw_deleted` = 0 ORDER BY PAS_Follow.folw_followed_user_id ASC

**:id**此示例中 = 1。

这是针对直接消息平台的,因此当用户启动用户列表时,他们只能看到具有互惠关系的用户,这一点很重要。

任何帮助将不胜感激,我希望对问题的解释足够完整。

****从下面回答****

希望这对其他人有帮助

SELECT foll_second.folw_follower_user_id AS user_user_id, user.user_first_name, user.user_last_name, user.user_avatar_url, user.user_job_type FROM PAS_Follow foll_first, PAS_Follow foll_second, PAS_User user WHERE foll_first.folw_follower_user_id = foll_second.folw_followed_user_id AND foll_second.folw_follower_user_id = foll_first.folw_followed_user_id AND foll_first.folw_follower_user_id =:id AND foll_second.folw_follower_user_id = USER .user_user_id
4

1 回答 1

1

您在用户表中缺少一个 id。如果你有它,我们称之为它id,你可以使用它:

SELECT * 

    foll_second.folw_follower_user_id AS user_user_id, 
    user.user_first_name, 
    user.user_last_name, 
    user.user_avatar_url, 
    user.user_job_type 

FROM 

    PAS_Follow foll_first,
    PAS_Follow foll_second,
    PAS_User user

WHERE 

   foll_first.folw_follower_user = foll_second.folw_followed_user 
   AND foll_second.folw_follower_user = foll_first.folw_followed_user
   AND foll_first.folw_follower_user = **:id**
   AND foll_second.folw_follower_user = user.id;

这将为您提供两个链接关系的组合列表,以及这些关系所连接的用户**:id**

这会从两个关注关系和一个用户的所有可能组合中选择与您想要的东西相对应的组合,这意味着:

  • 这两种关系应该相互联系。
  • 这实际上应该是互惠的
  • “起始”用户应该是您正在寻找的用户
  • 结果中的用户行应该是第二个关系指向的用户行。
于 2013-06-26T18:34:35.563 回答