2 таблицы (в БД) в 1 (DataSet)
От: StanislavB  
Дата: 24.02.05 16:06
Оценка:
Есть 2 таблицы в БД
Table1 (колонки C1,C2), Table2 (C1, C3). Поле С1 — ключ в Table1.
Хочу в DS сделать таблицу Table (C1, C2, C3), основываясь на MSDN:

You can use the Fill method multiple times on the same DataTable. If a primary key exists, incoming rows are merged with matching rows that already exist. If no primary key exists, incoming rows are appended to the DataTable.

сначала создаю вручную таблицу Table с первичным ключем C1 и добавляю её в DataSet.
Затем выполняю два запроса, ожидая, что объединение произойдёт по C1:
cmd.CommandText = "select c1,c2 from Table1";
dAdapter.Fill(ds, "Table");
cmd.CommandText = "select c1,c3 from Table2";
dAdapter.Fill(ds, "Table");

однако второй запрос очищает результаты первого.
Если таблицу Table вручную не создавать, то после выполнения всех запросов в ней появляются столбцы C1,C2,C3, но результаты двух запросов расположены в разных строках, т.е. строк в два раза больше, чем нужно.
В чём тут нюанс?
2 таблицы (в БД) в 1 (DataSet)
От: Аноним  
Дата: 24.02.05 16:42
Оценка:
Заполняй вторым запросом датасет только для другой таблицы
dAdapter.Fill(ds, "Table2");
-----------
а потом просто в dataSet сделай связку между таблицами Table и Table2.... думаю что через 5 минут поиска в СДК или гугле найдешь как это сделать.... =)
Удачи


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
RE: 2 таблицы (в БД) в 1 (DataSet)
От: Аноним  
Дата: 24.02.05 21:11
Оценка:
Заполняй вторым запросом датасет только для другой таблицы
dAdapter.Fill(ds, "Table2");
-----------
а потом просто в dataSet сделай связку между таблицами Table и Table2.... думаю что через 5 минут поиска в СДК или гугле найдешь как это сделать.... =)
Удачи

Или в одном запросе 2 набора данных Коллекционеру бабочек, кажется, что все по улице с сачками ходят.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: 2 таблицы (в БД) в 1 (DataSet)
От: StanislavB  
Дата: 25.02.05 10:55
Оценка:
А>Заполняй вторым запросом датасет только для другой таблицы
А>dAdapter.Fill(ds, "Table2");
А>-----------
А>а потом просто в dataSet сделай связку между таблицами Table и Table2.... думаю что через 5 минут поиска в СДК или гугле найдешь как это сделать.... =)

В дальнейшем все равно итерировать по двум таблицам придется, так что лучше SQLем обойтись: данные с сервера за 1 раз взять.
Re: 2 таблицы (в БД) в 1 (DataSet)
От: Аноним  
Дата: 02.03.05 21:12
Оценка:
Просто им имена надо разные давать....
dAdapter.Fill(ds, "Table1");
dAdapter.Fill(ds, "Table2");

Здравствуйте, StanislavB, Вы писали:

SB>Есть 2 таблицы в БД

SB>Table1 (колонки C1,C2), Table2 (C1, C3). Поле С1 — ключ в Table1.
SB>Хочу в DS сделать таблицу Table (C1, C2, C3), основываясь на MSDN:
SB>

SB>You can use the Fill method multiple times on the same DataTable. If a primary key exists, incoming rows are merged with matching rows that already exist. If no primary key exists, incoming rows are appended to the DataTable.

SB>сначала создаю вручную таблицу Table с первичным ключем C1 и добавляю её в DataSet.
SB>Затем выполняю два запроса, ожидая, что объединение произойдёт по C1:
SB>
SB>cmd.CommandText = "select c1,c2 from Table1";
SB>dAdapter.Fill(ds, "Table");
SB>cmd.CommandText = "select c1,c3 from Table2";
SB>dAdapter.Fill(ds, "Table");
SB>

SB>однако второй запрос очищает результаты первого.
SB>Если таблицу Table вручную не создавать, то после выполнения всех запросов в ней появляются столбцы C1,C2,C3, но результаты двух запросов расположены в разных строках, т.е. строк в два раза больше, чем нужно.
SB>В чём тут нюанс?
Re: 2 таблицы (в БД) в 1 (DataSet)
От: ilya_ny  
Дата: 03.03.05 00:37
Оценка:
Здравствуйте, StanislavB, Вы писали:

можно объединить 2 запроса в один

cmd.CommandText = "select c1,c2 from Table1   select c1,c3 from Table2";
dAdapter.Fill(ds, "Table");


или

cmd.CommandText = "select c1,c2 from Table1";
dAdapter.Fill(ds, "Table1");
cmd.CommandText = "select c1,c3 from Table2";
dAdapter.Fill(ds, "Table2");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.