我正在开发一个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和他们的帖子。如果他们的任何墙上没有任何评论那么它就没有显示。请帮我一个人
答案 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