2012-08-12 63 views
1

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

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 | 
-------------------------------------- 

回答

1

在你WHERE声明,做这样的事情,所以你匹配的关系表列两种。 OR得到他们两个。

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

祝你好运!