2016-02-22 28 views
0

需要幫助我的新的Asp.net 現在我想嘗試啓動社交網絡項目解決SQL

我有3個表

用戶

用戶ID -Username - 電子郵件 -Password 雜牌 -Profilepic

-Postid -content -Postdate -userid

好友列表

Friendlistid - 用戶ID - 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子句來執行數據

Group by, Count and Lambda Expression