2011-11-30 20 views
0

因此,我的大部分SQL查詢都已完成。但是,我似乎無法弄清楚如何選擇只由用戶朋友發佈的線程。如何查找僅由朋友發佈的帖子?

這裏是我的作品目前查詢:

SELECT social_posts.message, social_posts.post_stamp, user.username, user.id, user.default_picture 
FROM social_threads 
JOIN social_posts ON social_posts.thread_id = social_threads.id 
LEFT JOIN user ON user.id = social_threads.user_id 
ORDER BY social_threads.id DESC 

這裏的friends表:

*----*--------*--------*---------* 
| id | user_a | user_b | request | 
*----*--------*--------*---------* 
| 1 | 3  | 5  | 1  | 
*----*--------*--------*---------* 

request設置爲1意味着好友請求被接受。

的地方在查詢子句必須是這個樣子:

WHERE ((friends.user_a = '3' || friends.user_b = '3') && friends.request = '1') || (social_threads.user_id = '3') 

我只需要弄清楚如何獲取其中的主要查詢子句。

任何幫助是極大的讚賞。

回答

1

你將不得不加入的朋友表,只保留行,在這種用戶線程海報的朋友。類似這樣的:

SELECT social_posts.message, social_posts.post_stamp, user.username, user.id, user.default_picture 
FROM social_threads 
JOIN social_posts ON social_posts.thread_id = social_threads.id 
LEFT JOIN user ON user.id = social_threads.user_id 
Join friends on (user.id = friends.user_a and social_threads.user_id = friends.user_b or user.id = friends.user_b and social_threads.user_id = friends.user_a) and friends.request = 1 
ORDER BY social_threads.id DESC 
0

使用OR和AND運算

WHERE (friends.user_a = '3' OR friends.user_b = '3') AND friends.request = '1' 
相關問題