Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Select über mehrere Datenbanken

Frage Entwicklung Datenbanken

Mitglied: hushpuppies

hushpuppies (Level 1) - Jetzt verbinden

23.03.2009, aktualisiert 18:26 Uhr, 14453 Aufrufe, 6 Kommentare

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.
Mitglied: Biber
23.03.2009 um 19:16 Uhr
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
Bitte warten ..
Mitglied: hushpuppies
24.03.2009 um 11:48 Uhr
Danke für die schnelle Antwort!

Ich komme da mit deiner Schreibweise nicht ganz zurecht.
Könntest du bitte ein quasi ausformuliertes Beispiel geben?

Wäre sehr nett
Bitte warten ..
Mitglied: Biber
24.03.2009 um 13:01 Uhr
Moin hushpuppies,

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
Bitte warten ..
Mitglied: hushpuppies
25.03.2009 um 15:21 Uhr
Also es handelt sich um einen Server mit mehreren Datenbank. Also der einfachste Fall in der Hinsicht.
Für eine Datenbank sieht mein Select-Befehl jetzt ungefähr so aus:

SELECT adressen.FB1,
adressen.FB2,
adressen.FB3,
adressen.Strasse,
adressen.PLZ,
adressen.Ort,
adressen.Land,
ansprechpartner.AnsprechpartnerVorname,
ansprechpartner.AnsprechpartnerNachname
FROM db1.adressen adressen
INNER JOIN
db1.ansprechpartner ansprechpartner
ON (adressen.ID = ansprechpartner.ID)
WHERE (adressen.Land = 'DE')

Eigentlich also total simpel.

Das gleiche würde ich jetzt gerne in mehreren Datenbanken gleichzeitig ausführen, damit ich das nicht 10 mal oder so exportieren muss. Die Datenbanken sind wie gesagt identisch in der Struktur.
Bitte warten ..
Mitglied: Biber
25.03.2009 um 16:05 Uhr
Moin hushpuppies,

dann sollte die Mimik sinngemäß so sein.
01.
SELECT db1adr.FB1 as FB1, 
02.
db1adr.FB2 as FB2, 
03.
db1adr.FB3 as FB3 , 
04.
db1adr.Strasse as Strasse, 
05.
db1adr.PLZ as PLZ, 
06.
db1adr.Ort as Ort, 
07.
-- db1adr.Land, -- ist dich immer 'DE' ? 
08.
db1ap.AnsprechpartnerVorname as APVorname, 
09.
db1ap.AnsprechpartnerNachname as APnachname, 
10.
'DB1' as QuellDB 
11.
FROM db1.adressen adressen db1adr 
12.
INNER JOIN 
13.
db1.ansprechpartner ansprechpartner db1ap 
14.
ON (db1adr.ID = db1ap.ID) 
15.
WHERE  db1adr.Land = 'DE' 
16.
UNION ALL 
17.
18.
SELECT db2adr.FB1, 
19.
db2adr.FB2 , 
20.
db2adr.FB3 , 
21.
db2adr.Strasse, 
22.
db2adr.PLZ , 
23.
db2adr.Ort as Ort, 
24.
-- db2adr.Land, -- ist dich immer 'DE' ? 
25.
db2ap.AnsprechpartnerVorname , 
26.
db2ap.AnsprechpartnerNachname, 
27.
'DB2' as QuellDB 
28.
 
29.
FROM db2.adressen adressen db2adr 
30.
INNER JOIN 
31.
db2.ansprechpartner ansprechpartner db2ap 
32.
ON (db2adr.ID = db2ap.ID) 
33.
WHERE  db2adr.Land = 'DE' 
34.
35.
UNION ALL 
36.
..... 
37.
 
Grüße
Biber
Bitte warten ..
Mitglied: hushpuppies
26.03.2009 um 09:14 Uhr
Vielen lieben Dank!
So funktioniert's
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Mehrere Instanzen

Frage von ForgottenRealm zum Thema Datenbanken ...

VB for Applications
gelöst Feld mit CSV-Daten aus MySQL-Datenbank einlesen (3)

Frage von Andreas.HH1 zum Thema VB for Applications ...

Datenbanken
MySQL bearbeiten - Rechte auf User ändern (6)

Frage von istike2 zum Thema Datenbanken ...

Batch & Shell
gelöst Powershell select-string -pattern (2)

Frage von LianenSchwinger zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Datenschutz

Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht

(1)

Information von BassFishFox zum Thema Datenschutz ...

Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Heiß diskutierte Inhalte
Utilities
CCleaner 5.33 mit Malware infiziert (27)

Information von SeaStorm zum Thema Utilities ...

Windows Systemdateien
Windows bootet nicht mehr Fehlermeldung 0xc0000098 (19)

Frage von franzgoerlich zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
gelöst 802.1X-Authentifizierung (16)

Frage von Alex29 zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Dateien mit Intelligenz per GPO ins Programmverzeichnis (14)

Frage von erwin.t zum Thema Windows Netzwerk ...