2016-02-22 6 views
0

Я новичок в Asp.net теперь я хочу, чтобы попытаться начать проект социальной сетиНужна помощь в решении SQL

У меня есть 3 таблицы

Пользователь

Userid -username -Email -Password -Name -Profilepic

Сообщение

-Postid -поперечник -Postdate -Userid

список друзей

Friendlistid - идентификатор пользователя - 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?

+0

Вам нужно несколько запросов. – SLaks

+0

** Не храните пароли в текстовом формате **. – SLaks

ответ

0

Если у вас есть отношения между таблицами и Entity Framework. Вы можете просто вызвать таблицы под своим «списком друзей». Вы можете принять это возвращение запроса о создании класса, специфичные для этого возвращения

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, Count and Lambda Expression

Смежные вопросы