可以说,这里是我的数据库结构SQL - 多个查询或一个连接
TableA
{
[ID] INT IDENTITY (1, 1) primary key,
[Title] varchar (50) NOT NULL,
[Details] varchar(50) NOT NULL
}
TableB:
{
[ID] INT foreign key references [TableA] ([ID])
[AvailableTime] DATETIME NOT NULL
}
TableC:
{
[ID] INT foreign key references [TableA] ([ID])
[AvailableLocation] varchar(50) NOT NULL
}
我需要所有从表A柱以及特定ID
从表B AvailableTimes列表结果应该如下所示:新对象(id,title,details,List availableTime);
一个ID可能有多个可用时间。性能明智和速度明智的会更好,如果我做两个单独的查询来检索这些信息或做一个连接,然后循环通过列表两次。 I.E.
select * from TableA where ID = 1;
select * from TableB where ID = 1;
select * from TableC where ID = 1;
...
OR
select * from TableA inner join TableB on TableA.ID = TableB.ID inner join TableC on TableA.ID = TableC.ID where ID = 1
List<DateTime> availableTime = new List<DateTime>();
foreach(DataRow row in resultTable.Rows)
{
if (!availableTime.Contains((DateTime) row["AvailableTime"]))
availableTime.Add((DateTime) row["AvailableTime"]);
}
foreach(DataRow row in resultTable.Rows)
{
if (!availableLocation.Contains((string) row["AvailableTime"]))
availableLocation.Add((string) row["AvailableLocation"]);
}
return new object (id, resultTable.Rows[1], resultTable.Rows[2], availableTime, availableLocation);
我的服务器上做这个(ASP.NET)和服务器负责对运行查询和前处理数据发送给用户。
在此先感谢。
这将是更方便地提供正确的答案和帮助,如果你可以分享你的表架构 – Tommassiov
运行查询和看看哪一种更好。有时运行两个简单的查询比一个复杂的查询要好。这一切都取决于,而且很难用所给的信息来说。你必须测试它。 –
你需要做的客户端处理在两种情况下获得一个“树”了SQL的。 SQL返回*表格*数据。在C#中,这样的转换(同时保留单个查询)对于LINQ来说是微不足道的。 – user2864740