Bremer: 2 Tabellen aus 2 verschiedenen Datenbanken verknüpfen

Hallo,

ich habe mich erstmals mit der Verküpfung von Tabellen in MySQL (5.0.70)beschäftigt und bin bisher auch zufrieden. Jetzt gibt es leider einen Punkt, an dem ich nicht mehr weiter komme.

Die Verknüfung von 2 (oder mehr) Tabellen ist mir geläufig, allerdings habe ich jetzt das Problem, dass die eine Tabelle in Datenbank 1 und die 2. Tabelle in Datenbank 2 liegt.

Ich habe mich schon krampfhaft auf die Suche begegeben, finde jedoch immer nur die Gesichte Tabelle1 mit Tabelle2 aus derselben Datenbank. Gibt es ein Schlagwort, unter dem ich fündig werden? JOIN bringt nur die letztgenannte Version. Oder kann mir jemand einen Demoschnipsel schreiben, wie das mit 2 Datenbanken aussieht?

Vielen Dank!

  1. Hi!

    Was Du da willst ist tricky. Das Problem: Datenbank1 kennt keine Tabellen von Datenbank2 und umgekehrt. Dein Query laeuft aber nunmal auf einer oder der anderen. Mit mySQL habe ich mich auf diesem Gebiet noch gar nicht beschaeftigt. Du brauchst in der verarbeitenden DB einen Query der die andere abfragt. Ich mache das regelmaessig mit Access, MSSQL Servern und ORACLE Servern und auch Textdateien. Ein pass through query waere z.B. eine Variante. Eine verlinkte Tabelle eine weitere.

    Ob und wie das mit mySQL funktioniert, muesstest Du jetzt selbst rausfinden. Evtl. kommt hier aber auch noch ein Hinweis.

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
  2. Hi, hier eine bespiel Query. - Du muss einfach bei jeder Tabelle angeben, welche Datenbank. Wenn du nichts angibst geht SQL immer von der gleichen Datenbank aus. Sobald du aber einmal was angibst, musst dass auch in der ganzen Query machen, sonst entsteht leicht chaos

    Das funktioniert nur, wenn bei db's auf einem Server liegen. (Soweit ich weiß)

    SELECT * FROM testdb1.table1 INNER JOIN testdb2.table1 USING (foo_id)

    Achtung: sollstest bestimmente Werte abfragen ist es unter umständen nötig deren genaue Position anzugeben:

    WHERE testdb1.table1.foo_id LIKE 123

    Ich hoffe das hilft weiter.

  3. Hallo,

    Die Verknüfung von 2 (oder mehr) Tabellen ist mir geläufig, allerdings habe ich jetzt das Problem, dass die eine Tabelle in Datenbank 1 und die 2. Tabelle in Datenbank 2 liegt.

    das ist kein Problem, wenn Du über die entsprechende Berechtigung verfügst.
    Ein ganz normaler Join mit vollqualifizierten Bezeichnern der Form:

    Datenbankname.Tabellenname bzw.
    Datenbankname.Tabellenname.Spaltenname

    Aliasnamen erleichtern Dir das Erstellen lesbarer Queries.

    Freundliche Grüße

    Vinzenz

    1. Mal ne bloede Frage:

      Kann ich mit mySQL auch auf eine andere DB zugreifen, die nicht auf dem gleichen Server liegt bzw. einem anderen User gehoert? (So hatte ich die Frage auch verstanden)

      Das waere in naechster Zeit evtl. ganz hilfreich fuer mich. Sonst muesste ich auf den Servern php-Schnittstellen schreiben. Wahrscheinlich bleibt mir aber eh nichts anderes uebrig, da der normale Provider soetwas wohl sowieso unterbindet.

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
      1. Hi!

        Kann ich mit mySQL auch auf eine andere DB zugreifen, die nicht auf dem gleichen Server liegt bzw. einem anderen User gehoert? (So hatte ich die Frage auch verstanden)

        Jein. Wenn unterschiedliche Credentials nötig sind, um auf die Daten zuzugreifen, geht das nicht. Denn die sind beim Verbindungsaufbau zu setzen und die Auswahl verschiedener Datenbanken erfolgt erst danach. Aber es gibt Replication, mit dem man zumindest die relevanten Daten vom zweiten Server auf den ersten Server replizieren kann, auf dem man dann zumindest lesend auf beides zugreifen kann. Setzt natürlich einen administrativen Eingriff und die entsprechenden Befugnisse voraus.

        Lo!

      2. Hallo steel,

        Mal ne bloede Frage:

        Deine Frage ist nicht blöd.

        Kann ich mit mySQL auch auf eine andere DB zugreifen, die nicht auf dem gleichen Server liegt bzw. einem anderen User gehoert? (So hatte ich die Frage auch verstanden)

        Prinzipiell ja, auch ohne Replikation oder Cluster, die dedlfix bereits erwähnt hat. Dazu dient die Federated-Storage-Engine.

        Das waere in naechster Zeit evtl. ganz hilfreich fuer mich. Sonst muesste ich auf den Servern php-Schnittstellen schreiben. Wahrscheinlich bleibt mir aber eh nichts anderes uebrig, da der normale Provider soetwas wohl sowieso unterbindet.

        Das ist der Nachteil bei der Sache. Bei "normalen Providern" (im Shared-Hosting-Bereich) wird man die Federated-Storage-Engine mit an Sicherheit grenzender Wahrscheinlichkeit nicht zur Verfügung haben.

        Freundliche Grüße

        Vinzenz

        1. Vielen Dank fuer die interessanten Antworten!

          Ich seh schon: Ich muss was frickeln. Zumal es grad so aussieht, als wuerden beide Datenbanken (Webseiten) bei verschiedenen Providern landen. Da duerfte die Wahrscheinlichkeit doch gegen Null streben, dass soetwas moeglich wird.

          Ich koennt natuerlich den Provider wechseln und wir fragen mal, ob der andere Provider da Moeglichkeiten bietet.

          Is aber alles noch Zukunftsmusik.

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
          1. Hi!

            Ich seh schon: Ich muss was frickeln. Zumal es grad so aussieht, als wuerden beide Datenbanken (Webseiten) bei verschiedenen Providern landen. Da duerfte die Wahrscheinlichkeit doch gegen Null streben, dass soetwas moeglich wird.

            Ja, vermutlich. Üblicherweise sind die MySQL-Server nur über das interne Netz erreichbar. Da hilft dir weder Replication noch die Federated-Engine, weil einfach kein Connect zum jeweils anderen Server zustandekommt.

            Ich koennt natuerlich den Provider wechseln und wir fragen mal, ob der andere Provider da Moeglichkeiten bietet.

            Wenn du wechseln willst, warum konsolidierst du da nicht alles bei einem? Also dann inklusive der abfragenden Programme, wegen dem oben erwähnten Connect-Problem.

            Lo!

            1. Moinsen,

              Ich koennt natuerlich den Provider wechseln und wir fragen mal, ob der andere Provider da Moeglichkeiten bietet.

              Wenn du wechseln willst, warum konsolidierst du da nicht alles bei einem? Also dann inklusive der abfragenden Programme, wegen dem oben erwähnten Connect-Problem.

              Das war die Idee. Meine Webseite parkt grad mehr oder weniger. Da befinden sich nur einige wenige Dateien deren Links ich gelegentlich verteile. Die Seite soll jetzt aber aktiviert werden. Erstmal kommt aber das Projekt meines Kumpels an den Start. Da stelle ich mir nun den Datentransfer zwischen beiden Seiten vor, da auch meine wohl eine entsprechende Unterseite bekommen wird. Fuer das Projekt gibt es noch keinen Provider. Es wird aber wahrscheinlich nicht meiner. Der Gedanke mit dem ich da gespielt habe (oder noch spiele) ist eben der, auch zum gleichen Provider zu wechseln, falls der sowas moeglich macht.

              Im moment stehen 1blu.de und all-inkl.com in der naehren Auswahl. Bin aber auch ueber all-inclusive-webspace.de gestolpert. Auf den ersten Blick fallen einem da die Preise auf. Fuer 23,- im Jahr Webspace mit php, perl und 25 Datenbanken? Einziges Manko scheinbar die fehlenden extra Domains. Preise dazu habe ich auch noch nicht gefunden.

              Hat da vielleicht noch jemand einen Tipp?

              --
              "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                    - T. Pratchett
          2. Hallo steel,

            Ich seh schon: Ich muss was frickeln. Zumal es grad so aussieht, als wuerden beide Datenbanken (Webseiten) bei verschiedenen Providern landen. Da duerfte die Wahrscheinlichkeit doch gegen Null streben, dass soetwas moeglich wird.

            Ich koennt natuerlich den Provider wechseln und wir fragen mal, ob der andere Provider da Moeglichkeiten bietet.

            wenn Du jeweils von außen auf den MySQL-Server zugreifen kannst, dann könntest Du die Federated-Storage-Engine lokal aufsetzen. Bei manchen Providern ist der Zugriff von außen möglich bzw. konfigurierbar, zum Beispiel bei HostEurope. Ich habe allerdings Verständnis dafür, wenn der Zugriff von außen aus Sicherheitsgründen nicht möglich ist.

            Freundliche Grüße

            Vinzenz