可以說,這裏是我的數據庫結構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