İ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.