join в DataSet

Akter
Дата: 13.10.2005 09:15:21
Пишу программу на С#, cоздаю DataSet, в который помещаю две таблицы из разных баз. Как можно объеденить эти таблички по какому-либо полю для отображения в DataGrid?
Akter
Дата: 13.10.2005 11:10:13
Смысл не в том как связать таблицы, а в том как отобразить их в DataGrid поля таблицы1 + поля таблицы2
И вообще можно ли такое делать? Может что-то типа SELECT можно использовать?
Sv219
Дата: 17.10.2005 21:52:45
такое делать можно, пример...
SELECT
	pr.CodeProduct, 
	, t.weightPackage
	, p.Id
	FROM price pr
	INNER JOIN package p ON p.id = pr.IdPackage
	LEFT JOIN tonnage t ON CASE p.NamePackageShort
и пихаешь результат етого запроса в дататейбл
Akter
Дата: 18.10.2005 13:58:15
А как этот запрос цепляется к таблицам в DataSet?
Sv219
Дата: 19.10.2005 07:05:47
ну как... создаешь дата тейбл заполняешь его данными посредством того запроса который я те паказал, а дальше с этим дата тейблом делай что хошь
Akter
Дата: 19.10.2005 09:00:56
я же писал:
 две таблицы из разных баз
А как написать такой запрос к разным базам? Тем более одна InterBase, вторая Access. А кодда они в одном DateSet, то вроде уже как в одной, но вот запрос написать не получается
Sv219
Дата: 19.10.2005 11:19:08
Akter
я же писал:
 две таблицы из разных баз
А как написать такой запрос к разным базам? Тем более одна InterBase, вторая Access. А кодда они в одном DateSet, то вроде уже как в одной, но вот запрос написать не получается


если разные базы в таком плане, тогда первое что мне приходит в голову, не думая, это создать 3 дататейбл и заполнять его руками... выдираешь из 1го и 2го дататейбла строки по ключевому полю, и вставляешь их в 3ий
Витал
Дата: 19.10.2005 11:56:32
Сам копаю в этом направлении, но накопал только это пока:
Вот цитата из Д.Сеппа

ГЛАВА 7 Работа с реляционными данными 263
Поиск связанных данных
Одно из основных применений объекта DataRelation — поиск связанных данных
в различных объектах DataTable. Тем не менее непосредственно объект DataRelation
не предоставляет такой функциональности — она реализуется методами GetCbiidRotws, GetParentRow и GetParentRows объекта DataRow. Так каким же образом Data-
Relation участвует в таком поиске? Упомянутые методы принимают в качестве
параметра объект DataRelation. Давайте подробно разберем, что представляют собой
эти методы и как их использовать,
Метод GetChildRows объекта DataRow
Поиск связанных с родительской записью дочерних записей в другом объекте
DataTable — очень простая задача. Для этого достаточно вызвать метод GetCbudRows
нужного объекта DataRow и передать ему имя объекта DataRelation, определяю-
щего отношение между объектами DataTable. Вместо имени можно также пере-
дать сам объект DataRelation. Метод GetChildRows возвращает связанные данные в
виде массива объектов DataRoiv.
Следующий фрагмент кода вызывает метод GetChildRows и просматривает воз-
вращаемые им данные;
Visual Basic .NET
'Просматриваем записи о клиентах
Din rowCustomer, rowOrder As DataRow
For Each rowCustomer In ds.Tables("Customers").Rows
Console, WriteLine(rowCustomer("CustomerID") & " - " & _
rowCustomer("CompanyName"))
'Просматриваем заказы, размешенные этими клиентами
For Each rowQrder In rowCustomer. GetChildRowsC'fielationName")
Console. WriteLine(vbTab & rowOrder("Order!D") & " - " * _
rowOrder("OrderDate"»
Next rowOrder
Next rowCustomer
Akter
Дата: 19.10.2005 15:51:04
Пока использую нечто подобное, предложенное Sv219. Читаю построчно DataReader с записями первой базы, делаю запрос с ключевым полем ко второй базе, результат помещаю в DataGrid.
Не считаю это оптимальным вариантом, но для моего случая подходит. Все же хотелось бы разобраться в этом до конца, ведь может понадобиться и для более сложной задачи, да и возможность писать запросы именно в DataSet дала бы большие возможности...
Витал
Дата: 20.10.2005 11:35:55
Но я у Сеппа больше ничего не нашел, кроме восторгов по поводу DataRelation и недоумений зачем вам соединяющие запросы.