Prinzessin
I'm new here

Verknüpfung von interner DBA-Layer und extern angebundener Datenbank

Jump to solution

Hallo, ich habe zwei Datenbanken in einem CMS-Projekt:

- interne Datenbank (DBA-Layer)

- externe MySQL-DB

Die Daten aus der externen DB - Beispiel: Tabelle "t_pdb_hersteller" - werden nur gelesen.

Es wurde eine interne Datenquelle angelegt, in der sich die Tabele "partner" befindet. Diese Tabelle enthält eine Combobox, die auf die Tabelle "t_pdb_hersteller" (externe DB) verweist und sich der Redakteur einen Hersteller auswählen kann. Zusätzlich gibt es weitere Felder  für den Hersteller / Partner hinzugefügt (Partner name, Picture, Partner text, Link), die der Redakteur pflegen kann (dazu hat er in der internen DB ja Schreibrechte):

datenquellen.gif

Zum Anzeigen der Hersteller auf einer Seite wird immer von einem Datensatz aus der Tabelle "referenzen_1" ausgegangen. Jedem Datensatz sind ein oder mehrere Hersteller über eine Zwischentabelle "TrRoReferenceObjectsHesterller" zugeordnet:

referenzen.gif

Das GUI-Element zur Zuordnung der Hersteller zu einem referenz_1-Datensatz sieht so aus:

formular.gif

Zur Ausgabe der zugeordneten Hersteller eines Datensatzes benutze ich diese Schleife:

schleife.gif

Mein Problem ist nun, dass ich nur an die Inhalte der externen MySQL-Tabelle "TPdbHersteller" komme und diese ausgeben kann, nicht aber die Daten, die sich in der DBA-Layer Datenbank befinden (Tabelle "partner"), weil ich von der externen Tabelle aus auf die interne Tabelle keine Verküpfung habe.

Gibt es hierfür eine Idee, wie man trotzdem auf diese Inhalte gelangen kann?

0 Kudos
1 Solution

Accepted Solutions

Hallo Frau Neubauer,

in ihrem Fall muss man wohl eine künstliche Beziehung schaffen in dem man ein einen der beiden DBs ein Feld anlegt (über die Oberfläche ), das eine Referenz auf eine der Ids der Datensätze der anderen DB enthält. Über die Id kann man sich z.B. über ein ContentSelect dann den entsprechenden Datensatz der anderen holen. Falls sie keine Joins benötigen können Sie trotzdem das ContentSelect nutzen.

Viele Grüße

Johannes Perlet

View solution in original post

0 Kudos
3 Replies
Prinzessin
I'm new here

Meine Idee war das XML des externen DB-Schemas zu bearbeiten und dort ein neues Feld fk_partner anzulegen:


<xs:element dbName="FK_PARTNER" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="fk_partner" nullable="1" type="xml"/>

Das funktoniert nur leider nicht, da ich eine Fehlermeldung erhalte, weil in der externen MySQL-Datenbank dieses Feld nicht vorhanden ist. Ich hatte gehofft, das Feld dazu benutzen zu können um eine Verknüpfung von externer DB-Tabelle auf die interne DB-Tabelle zu erhalten (also genau umgekehrt, wie es jetzt ist).

0 Kudos

Hallo Frau Neubauer,

in ihrem Fall muss man wohl eine künstliche Beziehung schaffen in dem man ein einen der beiden DBs ein Feld anlegt (über die Oberfläche ), das eine Referenz auf eine der Ids der Datensätze der anderen DB enthält. Über die Id kann man sich z.B. über ein ContentSelect dann den entsprechenden Datensatz der anderen holen. Falls sie keine Joins benötigen können Sie trotzdem das ContentSelect nutzen.

Viele Grüße

Johannes Perlet

0 Kudos

Vielen Dank, genauso habe ich es jetzt auch gelöst.

0 Kudos