简单的方式来查询两个朋友的名字在一个朋友表


Easy way to query the names of two friends in a friend table

我有一个朋友表,其中存储了两个朋友的id。当我查询时,比如说我的朋友,有没有一种简单的方法可以从用户表中获取我朋友的名字?我使用PHP和MySQL和表不是通过外键连接,但我认为我可以连接它们(使用Navicat)。

我查询:

session_start();
if(isset($_SESSION['valid_user']))
    {
        $currentuser= $_SESSION['valid_user'];
    }

$friendships= mysql_query("SELECT * FROM friends WHERE Person1 = '$currentuser' OR Person2 = '$currentuser' ");
while($row = mysql_fetch_assoc($friendsips))
    {
        if ($row['Person1'] == $currentuser) echo $row['Person2']; // quering the users name from here is hard and long thing to do
        if ($row['Person2'] == $currentuser) echo $row['Person1'];
    }

friends(friendshipID, Person1, Person2)

users(ID, name,姓)

假设表结构为:

用户:用户名、用户名

朋友:Friendship_id, userid_1, userid_2

SELECT name 
FROM Friends F JOIN Users U ON (F.userid_2 = U.userid) 
WHERE userid_1 = X

编辑:如果你想获得两个名字,你可以使用这个。

SELECT 
  U1.name as name1 , U2.name as name2
FROM 
 Friends F 
 JOIN Users U1 ON (F.userid_1 = U1.userid) 
 JOIN Users U2 ON (F.userid_2 = U2.userid) 
WHERE 
 userid_1 = X

你可以调整where子句来查询用户id。