SQL - 概述查询
问题描述:
在设计C# - > SQL数据访问层时,我遇到了一个看似简单的问题。SQL - 概述查询
下面是什么,我试图做的伪代码:
User.GetOverview()
用户概况由之类的东西
public class UserOverviewModel()
{
public string Username { get; set; }
public SavedSearchModel[] SavedSearches { get; set; }
public TrackingItemModel[] ItemsToTrack { get; set; }
}
所以无论是SaveSearchModel和TrackingItemModel是完全不同的数据库表,并与用户有一个 - >多重关系。
我的问题是,你如何从SQL查询中获得所有这些信息?在一天结束的时候,我试图从REST API返回是这样的:
{
"Username": "wakawaka54",
"SavedSearches": [
{ "SearchText" : "40mm" }
{ "SearchText" : "50mm 12v" }
],
"ItemsToTrack": [
{ "ItemID": "1374328575",
"ItemLink" "www.somelink.com" }
{ "ItemID": "357489574",
"ItemLink": "www.someotherlink.com" }
]
}
我应该使用事务,并分别返回每个查询?这是否会导致我支付与独立查询相同的速度惩罚?
答
使用inner join
SELECT U.UserName, S.SavedSearches, I.ItemsToTrack
FROM tblUsers U INNER JOIN tblSaveSearches S ON U.UserId = S.UserId
INNER JOIN tblItemToTrack I ON U.UserId = I.UserId
然后转换返回结果设置为UserOverviewModel
列表,然后利用NewtonSoft JSON
呀序列化我得到的数据之后。我在问如何在SQL或C#中构造这个查询。 –
我是否单独查询每个表并将每个结果加载到数组中,然后将整个事件解析为JSON。或者有什么方法可以收集我需要的一个数据库中的所有数据? –