如何获取任何用户和他的朋友发布的所有帖子和帖子评论

时间:2013-10-03 13:08:41

标签: asp.net sql-server-2008

我正在开发一个asp.net应用程序“社交网站”。我正在研究下表: -

Friends(ID,User_ID,Friend_ID)
Users(User_ID,User_Name,Full_Name,DOB,Gender)
User_Detail(ID,User_ID,Image,Father_Name,Mother_Name,Location,JobProfile)
Wall(Wall_ID,Wall_Content,TimeAgo,User_ID)
Wall_Comments(Comment_ID,Wall_ID,Comments,Comment_Date,User_ID)

我想选择Table- Wall和Wall_Comments的所有记录,其中User_ID = 5,User_ID = 5的所有朋友 我已经完成了以下Sql Query:

SELECT DISTINCT TOP (30) wall.wall_content, 
                         wall.wall_id, 
                         wall.user_id, 
                         wall.timeago, 
                         users.user_name, 
                         users.full_name, 
                         users.user_id                                 AS UID, 
                         wall_comments.comments, 
                         wall_comments.comment_id, 
                         CONVERT(NVARCHAR(1000), user_detail.image, 0) AS Image 
FROM   friends 
       INNER JOIN users 
               ON friends.user_id = users.user_id 
       INNER JOIN wall 
               ON users.user_id = wall.user_id 
       INNER JOIN user_detail 
               ON users.user_id = user_detail.user_id 
       left outer join wall_comments 
               ON wall.wall_id = wall_comments.wall_id 
WHERE  ( users.user_id IN (SELECT friend_id 
                           FROM   friends AS Friends_1 
                           WHERE  ( user_id = 5 )) ) 
UNION 
SELECT wall.wall_content, 
       wall.wall_id, 
       wall.user_id, 
       wall.timeago, 
       users.user_name, 
       users.full_name, 
       users.user_id                                 AS UID, 
       wall_comments.comments, 
       wall_comments.comment_id, 
       CONVERT(NVARCHAR(1000), user_detail.image, 0) AS Image 
FROM   wall 
       INNER JOIN users 
               ON wall.user_id = users.user_id 
       INNER JOIN user_detail 
               ON users. user_id = user_detail.user_id 
       left outer join wall_comments 
               ON wall.wall_id = wall_comments.wall_id 
WHERE  ( users.user_id = 5 ) 
ORDER  BY wall.wall_id DESC 

但是它只显示了一个桌面墙的记录和user_ID-5的Wall_Comments,它没有显示他的朋友Wall和他们的帖子。如果他们的任何墙上没有任何评论那么它就没有显示。请帮我一个人

1 个答案:

答案 0 :(得分:0)

这样的东西?

select *
from Friends
inner join Wall_Comments On (Wall_Comments.User_ID = Friends.User_ID or Wall_Comments.User_ID = Friends.Friend_ID)
inner join Users On Users.User_ID = Wall_Comments.User_ID
where Friends.User_ID = 5