MySQL Select über mehrere Datenbanken
Hallo!
Ich betreue unter anderem ein CRM-System. Einer unserer Kunden hat verschiedene Länder und demzufolge mehrere identisch aufgebaute Datenbanken.
Meine Frage wäre nun:
Wie muss ein Select-Befehl aussehen damit ich aus z.B. 3 Datenbanken jeweils aus der gleichen Tabelle dort Datensätze selektieren kann?
Verbal müsste das ungefähr so aussehen: Zeige mir alle Adressen aus den Datenbanken A, B und C deren Feld Adressen.Land gleich DE ist.
Geht das überhaupt?
Falls das geht, wäre mein nächster Schritt dann eine Art join, der mir dann zusätzlich noch zu den Adressen die jeweiligen Ansprechpartner ausgibt.
Danke.
Ich betreue unter anderem ein CRM-System. Einer unserer Kunden hat verschiedene Länder und demzufolge mehrere identisch aufgebaute Datenbanken.
Meine Frage wäre nun:
Wie muss ein Select-Befehl aussehen damit ich aus z.B. 3 Datenbanken jeweils aus der gleichen Tabelle dort Datensätze selektieren kann?
Verbal müsste das ungefähr so aussehen: Zeige mir alle Adressen aus den Datenbanken A, B und C deren Feld Adressen.Land gleich DE ist.
Geht das überhaupt?
Falls das geht, wäre mein nächster Schritt dann eine Art join, der mir dann zusätzlich noch zu den Adressen die jeweiligen Ansprechpartner ausgibt.
Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112173
Url: https://administrator.de/forum/mysql-select-ueber-mehrere-datenbanken-112173.html
Ausgedruckt am: 04.04.2025 um 09:04 Uhr
6 Kommentare
Neuester Kommentar
Moin hushpuppies,
grundsätzlich geht das mit mySQL sogar noch unkomplizierter als bei den anderen großen DBMSen wie Oracle oder DB2.
Wobei bestenfalls beim Begriff "unterschiedliche Datenbank" nochmal nachgefragt werden muss (Auf Einem DB-Server? Eine Location? Oder drei DB - davon eine in Brasilien und 2 in Australien und ein Modem dazwischen? *)
Einziger Unterschied zu einem "normalen" Join ist, dass Du die Tabellennamen voll qualifiziert angeben musst.
Bsp [Server].[Datenbank].[Owner/Schema].[Objekt] --> [Castrop02].[DB27].[derOhna].[Kundenstamm]
Im "Normal"-Fall bewegst Du dich ja auf EINEM Server und meist auch nur innerhalb einer DB ->also kann man/frau den Servernamen und den Datenbanknamen weglassen und tut das entsprechend auch.
Sollten die 3 DB-Instanzen in verschiedenen "Locations" sein, also auf unterschiedlichen Servern-> kann es etwas hakeliger werden, weil es mitunter "im laufenden Betrieb kaum spürbare" Installationsunterschiede geben kann, die ein JOINen ein bisschen erschweren.
Grüße
Biber
grundsätzlich geht das mit mySQL sogar noch unkomplizierter als bei den anderen großen DBMSen wie Oracle oder DB2.
Wobei bestenfalls beim Begriff "unterschiedliche Datenbank" nochmal nachgefragt werden muss (Auf Einem DB-Server? Eine Location? Oder drei DB - davon eine in Brasilien und 2 in Australien und ein Modem dazwischen? *)
Einziger Unterschied zu einem "normalen" Join ist, dass Du die Tabellennamen voll qualifiziert angeben musst.
Bsp [Server].[Datenbank].[Owner/Schema].[Objekt] --> [Castrop02].[DB27].[derOhna].[Kundenstamm]
Im "Normal"-Fall bewegst Du dich ja auf EINEM Server und meist auch nur innerhalb einer DB ->also kann man/frau den Servernamen und den Datenbanknamen weglassen und tut das entsprechend auch.
Sollten die 3 DB-Instanzen in verschiedenen "Locations" sein, also auf unterschiedlichen Servern-> kann es etwas hakeliger werden, weil es mitunter "im laufenden Betrieb kaum spürbare" Installationsunterschiede geben kann, die ein JOINen ein bisschen erschweren.
Grüße
Biber
Moin hushpuppies,
Soll ich mir jetzt Servernamen, Datenbanknamen und Tabellennamen ausdenken oder magst Du welche vorgeben?
Und hatten wir jetzt schon beantwortet, ob Du auch EINEM DB-Server rumdaddelst oder auf mehreren?
Grüße
Biber
Wie muss ein Select-Befehl aussehen damit ich aus z.B. 3 Datenbanken jeweils aus der gleichen Tabelle dort Datensätze selektieren kann?
Soll ich mir jetzt Servernamen, Datenbanknamen und Tabellennamen ausdenken oder magst Du welche vorgeben?
Und hatten wir jetzt schon beantwortet, ob Du auch EINEM DB-Server rumdaddelst oder auf mehreren?
Grüße
Biber
Moin hushpuppies,
dann sollte die Mimik sinngemäß so sein.
Grüße
Biber
dann sollte die Mimik sinngemäß so sein.
SELECT db1adr.FB1 as FB1,
db1adr.FB2 as FB2,
db1adr.FB3 as FB3 ,
db1adr.Strasse as Strasse,
db1adr.PLZ as PLZ,
db1adr.Ort as Ort,
-- db1adr.Land, -- ist dich immer 'DE' ?
db1ap.AnsprechpartnerVorname as APVorname,
db1ap.AnsprechpartnerNachname as APnachname,
'DB1' as QuellDB
FROM db1.adressen adressen db1adr
INNER JOIN
db1.ansprechpartner ansprechpartner db1ap
ON (db1adr.ID = db1ap.ID)
WHERE db1adr.Land = 'DE'
UNION ALL
(
SELECT db2adr.FB1,
db2adr.FB2 ,
db2adr.FB3 ,
db2adr.Strasse,
db2adr.PLZ ,
db2adr.Ort as Ort,
-- db2adr.Land, -- ist dich immer 'DE' ?
db2ap.AnsprechpartnerVorname ,
db2ap.AnsprechpartnerNachname,
'DB2' as QuellDB
FROM db2.adressen adressen db2adr
INNER JOIN
db2.ansprechpartner ansprechpartner db2ap
ON (db2adr.ID = db2ap.ID)
WHERE db2adr.Land = 'DE'
)
UNION ALL
.....
Grüße
Biber