简体   繁体   English

相互朋友查询

[英]Mutual friends query

I'm trying to create a mutual friends query. 我正在尝试创建一个共同的朋友查询。 But I'm unsure how to merge two tables to get the right result. 但我不确定如何合并两个表以获得正确的结果。

So if session user has a friend in common with their friend, mutual friend is one. 因此,如果会话用户与他们的朋友有共同的朋友,那么共同的朋友就是一个。 What I'm looking for is the best solution, fastest and smallest query to do the job. 我正在寻找的是最好的解决方案,最快和最小的查询来完成这项工作。

user table 用户表

id | first | last | username
----------------------------

friends table 朋友表

id | user 1_id | user2_id | status
----------------------------------

Attempted query 尝试查询

 $collectmutualfriends = mysqli_query($mysqli,"
    SELECT 
               user.id,
               user.first,
               user.last,
               user.username
    FROM       user 
    LEFT JOIN friends as friends1
           ON  friends1.user1_id = user.id
           AND friends1.user2_id = '$user2_id'
           AND friends1.status = 2

    LEFT JOIN friends as friends2
           ON  friends2.user2_id = user.id
           AND friends2.user1_id = '$user2_id'
           AND friends2.status = 2

    GROUP BY friends2.user2_id
    ");
$nummutual = mysqli_num_rows($collectmutualfriends);
if($nummutual==1){
    echo"<a href='mutualfriends.php?username=".$_GET['username']."'>".$nummutual." Mutual Friend<br></a>";
    }else if($nummutual>1){
    echo"<a href='mutualfriends.php?username=".$_GET['username']."'>".$nummutual." Mutual Friends<br></a>";
    }

UPDATE UPDATE

$user1_id = $_SESSION['id'];
$user2_id = $data['id'];

$user1_id and $user2_id can be in either user1_id or user2_id on the friends table dependant on who sent the friend request first. $ user1_id和$ user2_id可以在friends表上的user1_id或user2_id中,具体取决于谁先发送好友请求。

This should do the trick: 这应该做的伎俩:

$sql = "SELECT u.*
          FROM friends f1 
    INNER JOIN friends f2 ON (f2.user2_id = f1.user2_id)
    INNER JOIN user u ON (u.id = f2.user2_id)
         WHERE f1.user1_id = '$user1_id'
           AND f2.user1_id = '$user2_id'";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM