2009-02-03 7 views
0

Salut J'ai deux tables de données disent:Fusionner colonnes DATATABLE

Tableau 1:

name age 
---- --- 
Bob 40 

Tableau 2:

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

Je veux fusionner les deux tables pour obtenir quelque chose comme

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

Est-ce possible? J'ai essayé de fusionner mais ça ne semble pas fonctionner, merci. La raison pour laquelle je ne peux pas faire ce que vous suggérez, c'est parce que les deux données proviennent de deux bases de données différentes (Oracle, SQL). Je ne peux pas utiliser les serveurs liés car la vitesse n'est tout simplement pas là, y a-t-il quelque chose que vous pouvez me suggérer que je puisse faire par programmation? Merci.

Répondre

0

La fusion combinera uniquement les données des tables avec un schéma similaire.

Vous devrez probablement parcourir chaque table et créer une troisième table contenant toutes les colonnes souhaitées.

Aussi, je ne vois aucune sorte de relation clé ici. Si vous aviez cela, vous pourriez créer une relation de données sans avoir besoin de les fusionner.

0

Comment ces tableaux se rapportent-ils? Quelle est la clé entre les

select * from table1 t1 
join table2 t2 on <some magic where clause here> 
1

Je vais prendre un coup à ajouter aux deux réponses précédentes dans l'espoir de le rendre plus clair pour vous dans le cas où ce n'est pas. Qu'est-ce que Avare et menace se demandent pourquoi les deux tableaux dont vous parlez ne regardent pas quelque chose comme ceci:

Personne
PersonID (clé primaire)
FirstName
LastName
Âge

Démographie
DemographicsID (clé primaire)
PersonID (clé étrangère)
Autos
enfants

... si les deux tableaux ressemblaient à cela, vous pouvez ensuite les combiner en ajoutant quelques colonnes à la table de personne pour qu'il ressemblait à ceci:

Personne
PersonID (clé primaire)
FirstName
LastName
Age
Autos
enfants

...puis l'exécution d'une requête comme ceci:

MISE À JOUR Personne p, Démographie; d
SET
    p.Autos = d.Autos
    p.Kids = d.Kids

    p .PersonID = d.PersonID

Dans l'exemple ci-dessus, sans le champ PersonID dans les tables Person et Demographics, nous ne savons pas quel enregistrement démographique est associé à chaque enregistrement Person. Vous devez le savoir pour créer la table combinée.

0

Si vous souhaitez joindre ces deux tables de données - Table1 (nom, âge) et Table2 (auto, kids) indépendamment de toute jonction entre les colonnes, alors je préférerais utiliser Linq. Dans Linq vous pouvez joindre deux ou plusieurs tables avec le "rowIndex" du tabel.

Essayez de suivre le code 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 

Vous pouvez jouer avec les types si vous voulez faire cette fusion avec plus de sécurité de type.