使用 MySQL 联接


Using a MySQL join

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

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(标记)跟随用户 2(马特)和用户 2(马特)跟随用户 1(标记)。但是对于友谊,它要么是一行,要么是以一种或另一种方式陈述,状态为 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   |
--------------------------------------

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

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

祝你好运!