Alex: Zwei Datenbanken verbinden.. PHP, aber bitte kurzen Tipp...

Guten Abend ,

Brauche mal eine "vielleicht sogar einen kräftigen" Denkanstoß von euch, bzw. einen Tipp wo ich mich ordentlich einlesen kann.
Habe schon versucht was hier im Forum zu finden, aber hab leider nichts gefunden..

Möchte zwei Datenbanken verbinden... und zwar so:
Datenbank A:
Sind z.B. Kunden (Name, Adresse usw. usw.)

... Diese möchte ich mit einer Notiz-DB verbinden, so daß ich gesprächsnotizen an den Kunden X verbinden kann...
Zusammenhängen sollte dies dann über z.B. Kundennr....

Datenbank B: (Notizen)
Kundennr., Datum (wann erstellt) und Text...

Mir ist die Verbindung überhaupt nicht klar, -und weis auch gar nicht wie ich da jetzt ansetzen soll...

Alex

...Danke

  1. Hallo!

    Möchte zwei Datenbanken verbinden... und zwar so:

    Ich denke mal Du meinst zwei Tabellen.

    Datenbank A:
    Sind z.B. Kunden (Name, Adresse usw. usw.)

    ... Diese möchte ich mit einer Notiz-DB verbinden, so daß ich gesprächsnotizen an den Kunden X verbinden kann...
    Zusammenhängen sollte dies dann über z.B. Kundennr....

    Datenbank B: (Notizen)
    Kundennr., Datum (wann erstellt) und Text...

    // Kunde -> kunde
    kid  name
    1    abc
    2    def

    // Notiz -> notiz
    nid  kid    text
    1     2     blabla
    2     2     blubblub
    3     1     ugauga

    Das ganze kann man jetzt über ein JOIN verbinden.

    SELECT notiz.text FROM kunde INNER JOIN notiz (kunde.kid=notiz.kid) WHERE kunde.kid=2;

    So bekommst Du alle Notizen des Kunden mit der kid gleich 2. Es gibt verschiedene JOIN. Man kann das noch kürzer mit Aliase schreiben.
    Das wird Dir aber ein MySQL-Buch oder die MySQL-Doku http://www.mysql.de/doc/de/index.html sagen wie das geht.

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Kleiner Fehler! Da Fehlt ein ON!

      SELECT notiz.text FROM kunde INNER JOIN notiz (kunde.kid=notiz.kid) WHERE kunde.kid=2;

      SELECT notiz.text FROM kunde INNER JOIN notiz ON (kunde.kid=notiz.kid) WHERE kunde.kid=2;

      MfG, André Laugks

      --
      L-Andre @ gmx.de
  2. Halihallo Alex

    [...]
    Wäre es nicht wahrscheinlich, dass deine Problemstellung von einem gewissen System
    abhängig sein könnte? - Wenn du diese Frage mit Ja beantwortest und das solltest du,
    dann nenn dein DBMS!

    Zudem der kleine Hinweis, dass die "Datenbank" eine in sich geschlossene "Miniwelt"
    darstellt, welche völlig autark und fernab von anderen Datenbanken funktionieren soll
    und dein Vorhaben alles andere als "normal" ist. Aber evtl. gibt's bei gewissen Systemen
    die Möglichkeit dein kurrioses Vorhaben umzusetzen.

    Viele Grüsse

    Philipp

  3. Guten Abend ,

    ...snip...

    Möchte zwei Datenbanken verbinden... und zwar so:
    Datenbank A:
    Sind z.B. Kunden (Name, Adresse usw. usw.)

    ...snip...

    Datenbank B: (Notizen)
    Kundennr., Datum (wann erstellt) und Text...

    ...snip...

    Also, das ist eigentlich ganz einfach:

    Wichtig bei der ganzen sache ist, dass du midestens einen eindeutigen Index in den beiden Tabellen hast:

    Tabelle 1:
    Kundennummer, Name, Adresse, ...
    Tabelle 2:
    Kundennummer, Datum, Text, ...

    So, jetzt ist es möglich, die beiden im Select leicht zu verknüpfen:

    Select t1.Kundennummer,t1.Name,t1.Adresse,t2.Datum,t2.Text from Tabelle1 t1, Tabelle2 t2 where t1.Kundennummer=t2.Kundennummer

    Wichtig hierbei ist es anzugeben, welche Spalte (Name) aus welcher Tabelle (t1) genommen wird. Die "Where"-Kriterien kannst du wählen wie du willst, dieser sucht alle zusammengehörigen Einträge, hängst Du "and t1.Kundennummer='002314'" mit hinten an, sucht der Select nur den einen Kunden mit dieser Nummer...

    Ciao, Marc

    1. Halihallo Kingmac2104

      Also, das ist eigentlich ganz einfach:

      Zwei Tabellen, ja. Zwei Datenbanken, depends... Aber vielleicht hat Alex das ja
      schon immer gemeint.

      Wichtig bei der ganzen sache ist, dass du midestens einen eindeutigen Index in den beiden Tabellen hast:

      Alles richtig und gute Einführung, was du sagst, aber das ist komplett falsch. Weder
      braucht es einen eindeutigen Index, noch einen Primary Key (was du wohl damit meintest,
      jedoch keineswegs das selbe ist). Indexstrukturen sind dazu gedacht eine Abfrage
      performanter auszuführen, sind jedoch nicht Voraussetzung für einen JOIN. Genauso
      wenig der Primary Key, der zur eindeutigen Identifikation eines Datensatzes dient, auch
      ohne ihn lässt sich ein JOIN durchführen.

      So, jetzt ist es möglich, die beiden im Select leicht zu verknüpfen:
      Select t1.Kundennummer,t1.Name,t1.Adresse,t2.Datum,t2.Text from Tabelle1 t1, Tabelle2 t2 where t1.Kundennummer=t2.Kundennummer

      http://www.mysql.com/doc/de/JOIN.html sei hier genannt. Es gibt noch wesentlich
      schönere Methoden einen JOIN zu bilden.

      Viele Grüsse

      Philipp