İki farklı veritabanındaki tablolar arasında birleştirilsin mi?


124

MySQL'de iki farklı veritabanım var - hadi onlara A ve B diyelim .

A veri tabanındaki bir tablo ile B veri tabanındaki bir tablo arasında bir birleştirme gerçekleştirmek mümkün müdür ?

Yanıtlar:


155

Evet, hesabın uygun izinlere sahip olduğunu varsayarak kullanabileceğiniz:

SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

Tablo referansına, içinde bulunduğu veritabanının adını önek olarak eklemeniz yeterlidir.


4
Peki ya farklı sunuculardan iki veri tabanı? (örneğin, bir bulut hizmeti sunucusunda ve kendi sunucunuzdaki bir db üzerinde)
Yuval A.

1
Farklı DB'lere katılmak mümkün mü, DB1 = mysql & DB2 = PostgreSQL). Her ikisinin de birkaç ortak tablosu var.
MAX

1
@ YuvalA. @ Boatcoder Yuval'ın performans hakkında soru sorduğunu sanmıyorum. sadece sunucular arası birleştirmenin nasıl yapılacağını sormak. Müşteriden iki bağlantı kurmasını istemeniz gerektiğinden oldukça zor olacaktır.
Jayen

veritabanı adının tablo adıyla aynı ters işaretler içinde OLMADIĞINDAN emin olun, aksi takdirde alacaksınızERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Teşekkürler. benimle takma adlar olmadan da çalıştıFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Muhasebeci م


2
SELECT *
FROM A.tableA JOIN B.tableB 

veya

SELECT *
  FROM A.tableA JOIN B.tableB
  ON A.tableA.id = B.tableB.a_id;

0
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

Yalnızca SELECT satırında, tam referansla veya diğer adla hangi tablo sütunlarını kullandığınızı belirttiğinizden emin olun. Aşağıdakilerden herhangi biri işe yarayacaktır:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.