[SIZE=2][COLOR=#008080]DataSet[/COLOR][/SIZE][SIZE=2] dataSet = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]DataSet[/COLOR][/SIZE][SIZE=2]();
[/SIZE][SIZE=2][COLOR=#008000]//......добавляем в dataSet нужные нам таблицы, можно через DataAdapter.Fill(DataSet, String);
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Actors = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Actors"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_actor, name
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Roles = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Roles"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_role, name
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] WhereWhen = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"WhereWhen"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_wherewhen, where, when
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Common = dataSet.Tables[[/SIZE][SIZE=2][COLOR=#800000]"Common"[/COLOR][/SIZE][SIZE=2]]; [/SIZE][SIZE=2][COLOR=#008000]//id_role, id_actor, id_wherewhen
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2] Result = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]DataTable[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"Result"[/COLOR][/SIZE][SIZE=2]);
[/SIZE][SIZE=2][COLOR=#0000ff]foreach[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#008080]DataRow[/COLOR][/SIZE][SIZE=2] commonRow [/SIZE][SIZE=2][COLOR=#0000ff]in[/COLOR][/SIZE][SIZE=2] Common.Rows)
{
[/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] actorId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[0]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_actor
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] roleId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[1]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_role
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] wherewhenId = ([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2])commonRow.ItemArray[2]; [/SIZE][SIZE=2][COLOR=#008000]//читаем id_wherewhen
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008080]DataRow[/COLOR][/SIZE][SIZE=2][] actorRows = Actors.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_actor={0}"[/COLOR][/SIZE][SIZE=2], actorId)), [/SIZE][SIZE=2][COLOR=#008000]//выбраем записи из таблицы Actors, которые удовлетворяют текущему id_actor. Эта запись одна или вообще нет, т.к. она ключевая
[/COLOR][/SIZE][SIZE=2]roleRows = Roles.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_role={0}"[/COLOR][/SIZE][SIZE=2], roleId)),
whenwhereRows = WhereWhen.Select([/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Format([/SIZE][SIZE=2][COLOR=#800000]"id_wherewhen={0}"[/COLOR][/SIZE][SIZE=2], wherewhenId));
Result.Rows.Add(actorRows[0].ItemArray[1], roleRows[0].ItemArray[1], whenwhereRows[0].ItemArray[1]); [/SIZE][SIZE=2][COLOR=#008000]//Добавляем новые ячейки в результирующу таблицу
[/COLOR][/SIZE][SIZE=2]}
[/SIZE]
Вид для Базы
У меня есть БД
Id_actorrole
Id_actor --------- Id_actor
NameActor Id_role--------------------- Id_role
Address Id_wherewhen NameRole
… | …
|
Id_wherewhen
where
when
Так вот, я бы хотел сделать “вид”, в котором выводится такая информация:
NameActor, NameRole, Where, When
1 таблица:id_actor, name,...
2т.:id_role, name, ...
3т.: id_wherewhen, where, when
4т.: id_role, id_actor, id_wherewhen
1 связана с 4 по id_actor
2 c 4 по id_role
3 c 4 по id_wherewhen
1 таблица:id_actor, name,...
2т.:id_role, name, ...
3т.: id_wherewhen, where, when
4т.: id_role, id_actor, id_wherewhen
1 связана с 4 по id_actor
2 c 4 по id_role
3 c 4 по id_wherewhen[/QUOTE]
В смысле надо запрос придумать или что?
Если запрос, то вот вроде этого
select a.name, b.name, c.where, c.when
from table1 a, table2 b, table3 c, table4 d where
a.id_actor=d.id_actor and b.id_role=d.id_role and c.id_wherewhen=d.id_wherewhen
а полностью средствами ADO.NET
Можно по-точнее написать, что вам нужно.
так вот вопрос: я бы хотел создать вид без использования
запросов к серверу(через запрос к серверу я знаю как сделать )
и по-моему с AdO.NET работают отсоединенно, так что я бы хотел не обращаться
к базе т.к. думаю что через ADO.NET будет быстрее.
Ну если всё-таки нельзя, тогда на мой взгляд эту задачу решить путём использования циклов
так что мне постоянно обращаться к серверу?
так что мне постоянно обращаться к серверу?[/QUOTE]
почему? при обновлении нужно ообновлять датасет? в чём проблема?
так что мне постоянно обращаться к серверу?[/quote]
Конечно, без запросов плоховато:( Хотя если у тебя стоит LINQ, то можно написать интегрированный запрос. Если нет, то примерно так:
Код:
это не совсем то что я хотел , НО все равно спасибо