显示最新的朋友列表

时间:2018-04-16 04:00:12

标签: php mysql sql

我正在开发一个朋友请求系统,目前只停留在一个点上。我有两个表,即memberrequestsrequests表存储了两个用户的user_idfriend_id,我想显示要从member表中获取的当前朋友的名称。例如,request表:

request_id | user_id(to) | friend_id(from) | status
2          | 2           | 3               | 1
3          | 3           | 1               | 1
6          | 4           | 2               | 1
7          | 2           | 1               | 1

我通过以下查询获得了当前的合作伙伴;

SELECT * FROM requests WHERE user_id='2' OR x.friend_id='2' AND x.status='1'

但我现在可以展示的只是id。我想要实现的是根据存储在member表中的id来获取正确的名称。存储在member表中的数据是;

member_id | name
1         | John
2         | Steve
3         | Sarah
4         | Stuart  

所以,如果 id 没有。 2& 3是朋友,添加朋友的名称应显示在接受请求的用户个人资料中。

我想做什么:

SELECT
    x.*,
    y.* 
FROM
    requests x,
    member y
WHERE 
    x.user_id='$member_id' OR 
    x.friend_id='$member_id' AND
    y.member_id = '$member_id' AND 
    x.status='1'

此查询的结果也会获得其他成员的列表,无论我指定的member_id如何。任何人都可以指出我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

SELECT
    x.*,
    y.* 
FROM
    requests x
INNER JOIN
    member y ON y.member_id = x.user_id OR y.member_id = x.friend_id
WHERE 
    x.user_id='$member_id' OR 
    x.friend_id='$member_id' AND 
    x.status='1'

INNER JOIN将使它成为您的查询将只返回请求和成员表中存在的行。

由于您的WHERE子句,这仅限于您传入的$ member_id的请求。