SQL:http://www.sqlfiddle.com/#!2/0f7a0d5/4
表包含以下行:
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (1,2,1);
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (2,1,1);
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (3,2,1);
此查询选择当前用户的双向朋友:
SELECT f1.asked_user_id AS friend_id
FROM friends AS f1 JOIN friends AS f2
ON f1.asked_user_id = f2.asker_user_id
AND f1.asker_user_id = f2.asked_user_id
WHERE f1.status = 1 AND f2.status = 1
AND f1.asker_user_id = 2
因此它导致1.因为用户2只有用户1作为双向朋友。
如何显示用户2的待处理请求?用户2是ask_user_id?
这是(3,2,1)是用户2的待处理请求。其中3要求2成为朋友。而对于他们成为双向的朋友,将创建新的入口(2,3,1)。
答案 0 :(得分:1)
您可以通过以下方式获得peding请求:
SELECT f1.asker_user_id AS friend_id
FROM friends AS f1
LEFT JOIN friends AS f2
ON f1.asked_user_id = f2.asker_user_id
AND f1.asker_user_id = f2.asked_user_id
WHERE f1.status = 1 AND f2.status IS NULL
AND f1.asked_user_id = 2
答案 1 :(得分:0)
这是你要找的吗?
这将显示想要成为用户2的朋友的用户,因此用户2有2个未决请求
SELECT f1.asker_user_id AS friend_id
FROM friends AS f1
WHERE f1.status = 1
AND f1.asked_user_id = 2