позволяет сказать, что здесь моя структура БД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
}
мне нужны все столбцы из таблицы А, а также список AvailableTimes из таблицы B для конкретного ID
результат должен выглядеть следующим образом: новый объект (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;
...
ИЛИ
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