我有两个表:members和member_requests。当成员向好友请求发送另一个成员时,会将一行插入到member_requests表中。如果收件人接受请求,则状态更新为1.如果某人拒绝该请求,该请求将被删除。我已经尝试了许多不同的查询来为特定用户生成一个朋友列表,但没有一个似乎能正常工作。请求的author_id必须是当前成员的id,或者接收者id必须是当前成员的id。有人可以提供一个查询,可以做到这一点?如何根据好友请求的状态使用MySQL获取好友列表?
http://sqlfiddle.com/#!2/021d7/13
SELECT
r.request_id, r.author_id, r.recipient_id, r.status,
m.member_id, m.display_name
FROM member_requests AS r
LEFT JOIN members AS m ON (r.author_id = m.member_id OR r.recipient_id = m.member_id)
WHERE r.status = 1
ORDER BY m.display_name
你尝试过使用'NOT IN'条件吗?类似于'SELECT * FROM成员朋友的朋友WHERE friend_id NOT IN(SELECT成员的直接朋友)'? – 2014-11-02 00:37:48
如果您在编辑之前看到我的文章,请再阅读一次。我意识到,我所拥有的查询实际上并不是朋友,而是所有成员。 – ShoeLace1291 2014-11-02 00:43:54
所以,如果我理解正确(在您编辑之后) - 您想获得某个成员的所有当前朋友的列表?那是 - 包含“我”(作为作者或作为友谊的接受者)并且具有“1”状态的所有请求的列表? – 2014-11-02 00:48:41