Объединить столбцы данных - PullRequest
0 голосов
/ 03 февраля 2009

Привет, у меня есть две таблицы с данными:

Таблица 1:

name  age
----  ---
Bob   40

Таблица 2:

auto kids
---- ----
3     3

Я хочу объединить две таблицы, чтобы получить что-то вроде

name age auto kids
---  --- --- ----
Bob  40   3   3

Возможно ли это? Я попытался выполнить слияние, но, похоже, оно не работает, спасибо.


Причина, по которой я не могу сделать то, что вы, ребята, предлагаете, заключается в том, что эти данные поступают из двух разных баз данных (Oracle, SQL). Я не могу использовать связанные серверы, потому что скорость просто не существует, есть ли что-то, что вы можете мне предложить, что я могу сделать программно? Спасибо.

Ответы [ 4 ]

1 голос
/ 03 февраля 2009

Я собираюсь сделать попытку добавить к двум предыдущим ответам в надежде прояснить для вас ситуацию, если это не так. Что Стинги и Угроза задаются вопросом, почему две таблицы, о которых вы говорите, не выглядят так:

лицо
PersonID (первичный ключ)
FirstName
LastName
Возраст

Демография
DemographicsID (первичный ключ)
PersonID (внешний ключ)
Автокресла
Дети

... если две таблицы выглядят так, вы можете объединить их, добавив несколько столбцов в таблицу person, чтобы она выглядела так:

Человек
PersonID (первичный ключ)
FirstName
LastName
Возраст
Автокресла
Дети

... затем выполнить запрос, подобный этому:

ОБНОВЛЕНИЕ Человек p, Демография d
SET
p.Autos = d.Autos
p.Kids = d.Kids
ГДЕ
p.PersonID = d.PersonID

В приведенном выше примере без поля PersonID в таблицах Person и Demographics мы не знаем, какая демографическая запись связана с каждой записью Person. Вам необходимо знать это для создания комбинированной таблицы.

0 голосов
/ 29 апреля 2011

Если вы хотите объединить эти две таблицы данных - Table1 (имя, возраст) и Table2 (auto, kids) независимо от соединения между столбцами, тогда я бы предпочел использовать Linq. В Linq вы можете объединить две или более таблиц с помощью «rowIndex» таблицы.

Попробуйте следующий код VB.NET:

Dim Table1, Table2, MergerTable As New DataTable

    Dim rs = From c In Table1.AsEnumerable()
        Join c1 In Table2.AsEnumerable() On Table1.Rows.IndexOf(c) Equals LicensDatum.Rows.IndexOf(c1)
                   Select New With
                   {
                        .a0 = c.Item(0),
                        .b0 = c.Item(0),
                        .a1 = c.Item(0),
                        .b1 = c1.Item(0)
                   }

    MergerTable = New DataTable()
    MergerTable.Columns.Add("name", GetType(String))
    MergerTable.Columns.Add("age", GetType(String))
    MergerTable.Columns.Add("auto", GetType(String))
    MergerTable.Columns.Add("kid", GetType(String))

    For Each row In rs.ToList()
        Dim tableRow = MergerTable.NewRow()
        tableRow.Item("name") = row.a0
        tableRow.Item("age") = row.b0
        tableRow.Item("auto") = row.a1
        tableRow.Item("kid") = row.b1
        MergerTable.Rows.Add(tableRow)
    Next

Вы можете играть с типами, если хотите сделать это слияние с большей безопасностью типов.

0 голосов
/ 03 февраля 2009

как связаны эти таблицы? Какой ключ между ними

select * from table1 t1
join table2 t2 on  <some magic where clause here>
0 голосов
/ 03 февраля 2009

Слияние будет объединять только данные таблиц с похожей схемой.

Возможно, вам придется перебирать каждую таблицу и создавать третью таблицу, в которой есть все нужные вам столбцы.

Кроме того, я не вижу здесь никакого вида отношений. Если бы у вас было это, вы могли бы установить связь с данными, и вам даже не нужно было бы их объединять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...