Zwei Datenbanken Abfragen und Daten Verbinden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zwei Datenbanken Abfragen und Daten Verbinden

    Hi,
    ich hab hier ein Project wo ich Daten aus 2 verschiedenen Datenbanken holen muss, welche auch verschiedene Zugangsdaten haben, aber auf dem selbem Server liegen.

    Nun das verbinden von beiden hat gut geklappt.
    Nun hab ich aber 2 Array mit den Daten und innerhalb der Datenbanken sind 2 Tabellen die gemeinsame IDs haben.

    Bevor ich wuste das es 2 verschiedene Datenbanken sind hatte ich es so:

    Quellcode

    1. $SELECT = "SELECT a.*, b.*, c.*, d.*, DATE_FORMAT(a.CDI_STARTDATE, '%d.%m.%Y, %H:%iUhr') as start, DATE_FORMAT(a.CDI_STOPDATE, '%d.%m.%Y, %H:%iUhr') as stop
    2. FROM TABELLE1 as a, TABELLE2 as b, TABELLE3 as c, TABELLE4 as d
    3. WHERE a.CDI_CBI_ID=b.id AND a.CDI_RTY_ID=c.RTY_ID
    4. AND a.CDI_KTY_ID=d.KTY_ID";


    So das selbe brauch ich nun nur das "TABELLE2" in der zweiten Datenbank liegt.

    Hoffe jemand hat eine schnelle Lösung :wink:
    Gruß
    Henning
  • soweit ich weiss, kannst du nur mit einer Datenbank verbunden sein.
    Das heisst, du musst die Verbindung trennen und dich in die andere einklinken.

    Du müsstest dann die Daten aus der ersten DB in Variablen speichern um nachher noch darauf zu zu greifen.
    Sonst sehe ich keinen anderen weg, aber ich bin grade auch erst am Anfang von PHP und MySQL.

    Oder vielleicht kannst du die Tabellen aus der ersten DB in die zweite kopieren, weiss aber nicht ob das ohne weiteres geht.
    Bitte verbessert mich, wenn ich falsch liege.
  • Naja,
    ich hab meine Datenbank Klasse einfach verdoppel quasi, nun hab ich 2 Klassen jede für eine Datenbank. Mir gehts aber auch garnicht dadrum das ich beide gleichzeitig abrufe, sondern das die beiden "result arrays" also die wo die ergebnisse der mysql abfrage drin sind, das ich diese sortieren kann, so das sie wie bei der alten abfrage zusammen hängend sind. Das ich auch den Namen zur passenden ID aus der anderen DB kriege.

    Gruß
    Henning
  • was genau hast du jetzt gemacht? was meinst du "quasi verdoppelt"?

    ich dachte du hättest beide tabellen jetzt in der einen und der anderen datenbank
    was unterscheidet dein aktuelles datenbanklayout also von der ausgangssituation?

    die ids müssen ja laut dieser abfrage zusammenhängen
    nur, wenn du sortieren magst, muss halt noch ein ORDER BY ergänzt werden

    Quellcode

    1. ORDER BY `a.CDI_KTY_ID`
  • Hi,
    ja vorher waren alle Tabellen in einer Datenbank nun sind sie in 2 Datenbanken aufgeteilt.
    Deshalb hab ich nun 2 Datenbank Verbindungen eine für die Datenbank1 und eine für Datenbank2.
    Dadurch hab ich ja auch nicht mehr einen Reqeust sondern zwei.

    $data1=$db_connect_1->query("SELECT * FROM tabelle1");
    $data2=$db_connect_2->query("SELECT * FROM tabelle2");

    So nun hat aber tabelle1 ein Feld in der eine ID steht die zur tabelle2 gehört.

    Z.b. in Tabelle1 stehen alle Userdaten + GruppenID. In Tabelle2 steht zur GruppenID der Name der Gruppe.

    Ich will nun alle Userdaten + den Gruppennamen zusammen ausgeben, wie mach ich das?

    Wenn es in einer Datenbank währe hätte ich das gemacht:

    $data=$db_connect->query("SELECT a.*, b.* FROM tabelle1 as a, FROM tabelle2 as b WHERE a.gruppenID=b.gruppenID");

    So währen dann alle Daten zusammengehörig, so das ich später wie folgt ausgeben könnte:

    Der User $data['a.username'] gehört zur Gruppe $data['b.gruppenname'].

    Hoffe jemand versteht mein Problem *g

    Gruß&Thx Henning
  • Achso,
    ich dachte du hättest nach der Antwort von PowerPeter wieder alles zusammengefasst

    ich würd halt die 2 Datenbanken lieber zu einer zusammenfassen als es später mit php zusammenzufügen
    das wäre um einiges performanter

    so musst du über die kompletten arrays iterieren

    aber gehen wir mal davon aus deine gruppen anfrage ergibt das array $group
    dann könntest du dein group array so um die benutzer erweitern

    Quellcode

    1. for($i=0; $i<$length; $i++) {
    2. $user_id = $user[$i]['id'];
    3. $group['benutzer'][$user_id] =& $user[$i];
    4. }


    hier wird übrigens keine kopie des objektes erstellt, sondern eine referenz erzeugt - wenn du dir unsicher bist, was das ist, dann mache die zuordnung lieber mit = statt mit =&