需要帮助解决SQL

时间:2016-02-22 17:38:43

标签: mysql linq

我是Asp.net的新手 现在我想尝试启动一个社交网络项目

我有3张桌子

用户

  

用户标识   -用户名     -电子邮件      -密码      -名称      -Profilepic

发布

  

-Postid -Content -Postdate -Userid

好友列表

  

Friendlistid - userid - friendid -status

我想加载来自我朋友和我自己的帖子

这是我的sql代码

select b.userid, a.Friendid, c.name, b.postid, b.Content, b.postdate, c.profilepic
from friendlist a
left join [user] c on a.friendid = c.userid
left join post b on a.friendid = b.userid
where a.userid = 1 AND a.Status = 1 OR a.Userid = 1
ORDER BY postid desc

我遇到的问题是我的帖子会重复

例如,我的朋友列表有3个朋友,我的每个帖子都会重复3次,我的朋友帖子保持正常。

此sql代码的任何解决方案?

1 个答案:

答案 0 :(得分:0)

如果表之间存在关系,并且正在使用order of the configuration application。您只需调用其友好列表"下方的表格即可。您可以使用此查询返回创建特定于此返回的类

public class ListFriendsGroup   
{      
        public int UserId { get; set; }
        public int friendId  { get; set; }
        public int PostId{ get; set; }
        public string Name { get; set; }
        public string Content { get; set; }
        public DataTime PostData { get; set; }
        public string ProfilePic { get; set; }
}

var friendlist = Context.friendList.Include("user").Include("post")
// HERE .GroupBy(... 
.Select(f => new ListFriendsGroup() { Userid = f.post.userid, FriendId = f.Friendid, Name = f.user.name, PostId = f.post.postid, Content = f.post.Content, PostData = f.post.postdate, Profilepic = f.user.profilepic }).ToList()

阅读Group By子句以执行数据分组

Entity Framework