Abfrage aus 2 Datenbanken

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

  • Abfrage aus 2 Datenbanken

    Hallo,

    ich habe 2 Tabellen in 2 verschiedene Datenbanken.
    In der 1. Tabelle, der 1. Datenbank, sind die User eingetragen
    und in der 2. Tabelle, der 2. Datenbank sind Ergebnisse eingetragen,
    auch von Usern, die aktuell nicht in der 1. Tabelle stehen.

    Jetzt möchte ich eine Ausgabe erzeugen, wo mir ausgegeben wird,
    welcher User welche Ergebnisse erzielt hat und nicht in der 1. Tabelle steht.

    Wie kann man das am besten realisieren?


    LG Sven

  • #2
    AFAIK kann MySQL nicht datenbankübergreifend arbeiten. Falls doch, kannst du das ja mal schenll mit einer Testquery ausprobieren, ob das geht. Dafür müsste dann aber der MySQL-Benutzter Zugriff auf beide Datenbanken haben.

    Ansonsten musst du die "Verknüpfung" halt PHP-seitig machen. Das dürfte besonders performant werden.

    Kommentar


    • #3
      Hallo,

      der User hat Zugriff auf beide Datenbanken.


      LG Sven

      Kommentar


      • #4
        Aha.

        Kommentar


        • #5
          Hallo,

          nach was sollte ich denn suchen um es realisieren zu können?


          LG Sven

          Kommentar


          • #6
            wenn beide Datenbanken von einem MySQL Server bereitgestellt werden geht das sehr wohl

            select
            db1.tab.spalte,
            db2.tab.spalte
            from db1.tab
            inner join db2.tab on ( db1.tab.prim = db2.tab.prim )
            where db1.tab.abc = 1 and db2.tab.xyz = 5

            funktioniert 1A
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Das meinte ich mit ausprobieren. Das Thema hatten wir vor ein paar Wochen schon mal, ich fand leider den Thread nicht.

              Kommentar


              • #8
                Hallo,

                ich bin jetzt schon etwas weiter, und die Ausgabe erfolgt.

                PHP-Code:
                $abfrage "select skat.nuke_users.uname AS uname,
                                   skatklopper.ergebnisse.datum AS datum
                                   from skat.nuke_users
                                   inner join skatklopper.ergebnisse
                                   WHERE datum >= '2006-01-01' "
                ;
                $ergebnis mysql_query($abfrage) or die(mysql_error()); 
                Jetzt soll pro Mitglied aber nur das letzte Ergebnis ausgegeben werden.

                Wie muss ich die Abfrage ändern, so das nur das Ergebnis mit dem letzten Datum angezeigt wird?


                LG Sven

                Kommentar


                • #9
                  sauber gehts imho nur mit einem SubSelect.

                  Bei MySQL und diesem einfachen Fall könnte auch ein GroupBy usernm und ein MAX(datum) wirken. Korrekt im sinne von SQL ist das dann aber nicht.

                  Kommentar


                  • #10
                    Hallo,

                    ich habe das jetzt so:

                    PHP-Code:
                    $abfrage "SELECT u.uname, e.datum
                                FROM skat.nuke_users u
                                JOIN skatklopper.ergebnisse e
                                ON e.spieler_id = u.uname
                                AND e.datum = ( SELECT max(datum)  
                                FROM skatklopper.ergebnisse WHERE datum >=2007-01-01
                                AND spieler_id = u.uname GROUP BY u.uname )"
                    ;
                    $ergebnis mysql_query($abfrage) or die(mysql_error()); 
                    Die Tabelle Ergebnnisse enthält ca 200 000 Datensätze,
                    und die Abfrage dauert doch sehr lang.

                    Wie kann ich die Abfrage beschleunigen?


                    LG Sven

                    Kommentar


                    • #11
                      Die Query mittes EXPLAIN überprüfen.

                      Kommentar


                      • #12
                        Hallo,

                        wenn ich EXPLAIN vor das SELECT setze wird mir nur eine leere Seite angezeigt:

                        PHP-Code:
                        $abfrage "EXPLAIN SELECT u.uname, e.datum
                                    FROM skat.nuke_users u
                                    JOIN skatklopper.ergebnisse e
                                    ON e.spieler_id = u.uname
                                    AND e.datum = ( SELECT max(datum)  
                                    FROM skatklopper.ergebnisse WHERE datum >=2007-01-01
                                    AND spieler_id = u.uname GROUP BY u.uname )"
                        ;
                        $ergebnis mysql_query($abfrage) or die(mysql_error()); 
                        Laut Doku sollte ja eine Ausgabe erfolgen.

                        Was läuft da falsch?


                        LG Sven

                        Kommentar


                        • #13
                          Na, wenigstens hast du den Blick in die Doku gewagt. Natürlich gibt die Query auch etwas zurück. Nur glaube ich kaum, dass das was da zurück kommt in deinen bestehenden Programmablauf passt. Schau dir mal an, was da zurück gegeben wird.

                          Es bietet sich vielleicht an, die Query mal in PMA auszuführen.

                          Kommentar


                          • #14
                            Hallo,

                            da wird mir folgendes ausgegeben.


                            LG Sven
                            Angehängte Dateien

                            Kommentar

                            Lädt...
                            X