一个用户可以在我的网站上有两种类型的关系。关注或好友。我想用与他们有关系的用户的帖子填充每个用户的新闻提要。到目前为止,我有这个连接:
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
祝你好运!