MySQL farklı yapısı ile tablolar birleştirme

2 Cevap php

Ben farklı bir yapıya sahip iki veritabanları var.

Tablo 1:

ch_code    ch_def    ch_weight

Tablo 2:

address    ch_code

Ben bu iki tabloyu birleştirmek gerekir, bu yüzden yapı gibi görünecektir:

ch_code    ch_def    ch_weight    address

Iki tablodaki sayı veya satır (tablo 1 daha fazla veri vardır) farklıdır.

I merge, union .. başka bir şey kullanmak gerekir?

Teşekkür ederiz!

2 Cevap

Burada üç olası davalarını gereken bir çözüm:

  1. T2 gelmedi t1 bir ch_code değer var
  2. T1 gelmedi t2 bir ch_code değer var
  3. Bir ch_code değer t1 ve t2 hem de var

SELECT t1.ch_code, t1.ch_def, t1.ch_weight, '' as address from t1 where not exists (select * from t2 where t2.ch_code = t1.ch_code)

UNION

SELECT t2.ch_code, '' as ch_def, '' as ch_weight, t2.address from t2 where not exists (select * from t1 where t1.ch_code = t2.ch_code)

UNION

SELECT t1.ch_code, t1.ch_def, t1.ch_weight, t2.ch.address from t1 left join t2 on t1.ch_code = t2.ch_code

O resultset elde ettik kez konut Birleştirilen verileri için yeni bir tablo varsa, o zaman INSERT INTO yapabilirsiniz.

Tablo2 sadece Tablo1 (yani Tablo1'e değil Table2 şey yok) dahil olan veriler varsa, (Tablo3 varsayarak zaten kurulum oldu) gibi bir şey yapmak mümkün olmalıdır:

INSERT INTO TABLE3 (ch_code, ch_def, ch_weight, address)
SELECT Table1.ch_code, Table1.ch_def, Table1.ch_weight, Table2.address
FROM Table1 LEFT JOIN Table2 on Table1.ch_code = Table2.ch_code

(Ben bir MySQL kullanışlı yüklemeniz gerekmez, bu nedenle belirli sözdizimi farklı Gözat.)

Table1 verileri eşleştirmek (ve bu verileri tutmak istiyorum) değil Table2 veri varsa, (MySQL o desteklemiyorsa, BİRLİĞİ bir LEFT JOIN ve RIGHT JOIN) FULL JOIN gerekir.