php - SQL/PHP 从关注您的人中选择您不关注的关注者

标签 php sql twitter

我正在开发一个类似于 Twitter 的网站。您可以关注他人并发布消息。

我想选择一个我不关注但我关注的人关注的人。 希望你能明白这句话!

这是我当前使用的 SQL 查询,但它无法正常工作。它仍然显示我已经关注的人。

SELECT a.naar_id
FROM wievolgtwie a, wievolgtwie b
WHERE a.van_id = $row[0]
    AND b.van_id = $_SESSION[id]
    AND a.naar_id != $_SESSION[id]
    AND a.naar_id != b.naar_id
LIMIT 0, 1;

说明:

naar_id 后面跟着 van_id 的人的 ID。

van_idnaar_id后面的id。

(van_id, naar_id) 所以行 (1, 3) 和 (2, 3) 意味着 id 1 和 2 都在 id 3 之后。

wievolgtwie 是包含“whofollowswho”信息的表。

van_id, naar_id
+------+------+
| 1    | 2    |
| 1    | 3    |
| 2    | 1    |
| 2    | 4    |
| 3    | 4    |
| 3    | 2    |
+------+------+

$row[0] 是您关注的人,我想从中选择他们关注的人,但您没有。

$_SESSION[id] 是您的 ID(登录者)。

因此,如果 $row[0] = 2 并且登录者的 id 为 1 'me';我想获取 id 4(因为 id 1 是我,我不关注 id 4)(参见示例表)

有人知道我想要实现的目标的正确查询吗?

提前致谢,

杰罗恩

最佳答案

您需要做的是在 where 子句中放置一个子查询,以确保数据库中不存在包含您的 id 和 naar_id 的行,并按该行进行过滤。应该是这样的:

SELECT a.naar_id
FROM wievolgtwie a, wievolgtwie b
WHERE a.van_id = $row[0]
    AND b.van_id = $_SESSION[id]
    AND a.naar_id != $_SESSION[id]
    AND a.naar_id != b.naar_id
    AND b.vaan_id NOT IN (SELECT vaan_id
                            FROM wievolgtwie
                           WHERE naar_id = a.naarId)
LIMIT 0, 1;

注意可能的伪代码,但这个概念应该有效。

关于php - SQL/PHP 从关注您的人中选择您不关注的关注者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409635/

相关文章:

javascript - Twitter OAuth Request_Token 与 Javascript,可能是错误的时间?

来自三个表的 SQL 查询的 PHP 多数组 (JSON)

php - utf-8 字符和 apache2 重写规则的问题

mysql - SQL 查询和字符串搜索

sql - 可选 TOP 子句是否有任何现有的、优雅的模式?

javascript - 如何在 Android 中突破 Twitter 应用内浏览器?

php - Switch 语句 > 可以在单个案例中包含多个案例匹配吗?

php - 在php中包含文件

sql - 如何在组中查找重复项 - SQL 2008

Objective-C如何将xml转换为字符串?