php - 如何从数据库mysql中选择待处理的好友请求

标签 php mysql sql

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 的 questions_user_id 位于何处?

此 (3,2,1) 是用户 2 的待处理请求。其中 3 要求 2 成为好友。为了使他们成为双向 friend ,将使用 (2,3,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

sqlfiddle demo

关于php - 如何从数据库mysql中选择待处理的好友请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775680/

相关文章:

mysql - 数据库规范化——相同字段,不同表

php - 我正在尝试使用用户元配置文件中的头像图像作为模板的背景

java.lang.ClassNotFoundException : com. caucho.vfs.Path

php - 使用 PHP 将 MySQL 查询输出为 SQLite

mysql - 阿雷尔 gem : "SELECT *" missing from where clause in rails

Mysql 存储过程更新并返回匹配行的列表

mysql - MYSQL 中的子字符串二进制数据

sql - 您什么时候会 INNER JOIN LEFT JOINed 表/

sql - MySQL:分组依据和 IF 语句

php - 按 NextPageID 字段排序数组