1

用户在我的网站上可以有两种类型的关系。关注或朋友。我想用与他们有关系的用户的帖子填充每个用户的新闻提要。到目前为止,我有这个加入:

SELECT  * 
FROM    posts a 
        LEFT JOIN relationships b
            ON a.user_id = b.user_2
WHERE   b.user_1 = $user_id AND 
    b.status IN (1,3,4) OR a.user_id = $user_id
ORDER BY a.post_id DESC

b.status 是我的关系表中确定两个用户之间关系状态的列。1 正在关注,3 是朋友,4 正在关注待处理的好友请求。我的加入效果很好,除了它没有考虑到我的“关系”表中只有一行可以代表任何两个人之间的朋友船。下面有两行。第一个是用户 1(mark) 跟随用户 2(matt) 和用户 2(matt) 跟随用户 1(mark)。但是对于友谊,它要么是一种方式,要么是另一种方式,状态为 3。首先,这是明智的做法吗?或者我也应该为这种类型的 pf 关系设置两行?第二,我怎样才能让我的 JOIN QUERY 也从 user_1 和 user_2 之间存在关系且状态 = 3 的用户那里获取帖子?不考虑 user_1 和 user_2 的顺序?

表结构:

Posts:

| user_id | post_id | story |
-----------------------------
|  1      |  1      | text. |
-----------------------------

Relationships:

| rel_id  | user_1  | user_2| status |
--------------------------------------
|  1      |  1      |   2   |    3   |
--------------------------------------
4

1 回答 1

1

在您的WHERE声明中,执行类似的操作,以便匹配关系表中的任一列。OR得到他们两个。

WHERE   b.user_1 = $user_id OR b.user_2 = $user_id 

祝你好运!

于 2012-08-12T19:57:13.307 回答