[MySql] Wie Tabellen zweier Datenbanken Joinen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySql] Wie Tabellen zweier Datenbanken Joinen?

    Hallo Leute,

    Google und Forumssuche hab ich ausführlich benutzt, find aber nicht so recht die passende Antwort.

    Mein Problem ist das ich Daten aus 2 Tabellen die auf unterschiedlichen Datenbanken liegen abfragen (über PHP) muss.

    Mit einem Join dürfte ich meines Wissens nach nicht weit kommen, soweit ich weis wird das bei MySql nicht datenbankübergreifend unterstützt.

    Nun bin ich am überlegen wie ich das Problem Client-seitig (PHP) am besten umgehe. Ich hätte 2 Lösungsansätze weiß jedoch nicht welchem ich den Vorzug geben soll:

    1. ich lese eine Tabelle komplett aus und lade sie als Temporäre HEAP-Tabelle in die andere Datenbank und führe hier erst den Join auf die 2. Tabelle aus wenn ich die eigentliche Abfrage ausführe.

    2. Ich führe erst die eigentliche Abfrage aus und 'sammle' sozusagen die ID's der Ergebnisdatensätze und frage mit diesen ID's dann die 2. Tabelle ab.

    Beide Lösungen sind meiner Meinung nach etwas ungelenk um nicht zu sagen unprofessionell, darum frage ich euch was ihr meint welches das kleinere Übel wäre???

    Oder kennt jemand von euch einen professionelleren Weg??

    Vielen Dank für euere Hilfe

    Gruss
    Quetschi
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

  • #2
    Re: [MySql] Wie Tabellen zweier Datenbanken Joinen?

    Original geschrieben von Quetschi
    Mit einem Join dürfte ich meines Wissens nach nicht weit kommen, soweit ich weis wird das bei MySql nicht datenbankübergreifend unterstützt.
    Ausprobiert?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Klar geht das mit nem Join....

      SELECT * FROM datenbankname.tabellenname LEFT JOIN datenbankname2.tabellenname ON datenbankname2.tabellenname.spaltenname = datenbankname.tabellenname.spaltenname
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Danke für die Antworten

        Auf das, dass man im Statement auch die Datenbanknamen mit angeben kann wär ich nie gekommen, weil keines meiner Bücher so etwas behandelt.

        Allerdings klappt mir das jetzt noch nicht so recht.

        Hier mal ein exemplarisches Codebeispiel wie das bei mir nun aussieht:

        PHP-Code:
        $db1 db_conn1();
        $db2 db_conn2();
            
        $query "SELECT * FROM db1.bw_adressen LEFT JOIN db2.pauschalen
        ON db1.bw_adressen.ID = db2.pauschalen.ID_bw_adressen
        WHERE db1.bw_adressen.ID = 8"
        ;

        $res mysql_query($query); 
        mysql_error() sagt mir folgendes:

        Access denied for user: 'dbxxx@%' to database 'dbyyy'

        Ich hab ja leider keinen Benutzer zur Verfügung mit dem ich auf beiden Datenbanken lesen könnte, sondern ich muss mit 2 Verbindungskennungen arbeiten.

        eine der Verbindungskennungen bei mysql_query() zu verwenden bringt mich ja auch ned weiter und mehr als eine darf ich ja nicht angeben.

        Gibts da trotzdem eine Möglichkeit??

        Gruss
        Quetschi
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Na das sind ja ganz andere Voraussetzungen.

          Wenn du keinen Benutzer hast, der auf beiden Datenbanken Leserechte besitzt, dann musst du dir wohl oder übel die Rechte besorgen, oder die Tabelle auslesen, als temp. Tabelle in die andere DB packen und dann joinen.

          Hättest du aber auch ruhig früher schreiben können


          P.S. Ich hab mal davon gehört, dass angeblich in Büchern nicht immer alles steht...
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Sorry, das war mir nicht von vornherein klar dass das Vorraussetzung ist. Hätt ich das gewusst wär ich wahrscheinlich gar ned hier gelandet

            Mal sehen ob Strato (bitte kein Komentar ) gewillt ist mir einen entsprechenden User einzurichten. Die Datenbanken würden schließlich auf dem gleichen Server (Business) liegen aber leider hab ich keine Möglichkeit die User selbst zu verwalten sonst wär ich eh längst anders vorgegangen.

            Trotzdem Vielen Dank ein klein wenig schlauer bin ich ja wieder geworden.

            Quetschi
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar

            Lädt...
            X