Zusammenführen der Felder zweier oder mehrerer Datenbanktabellen
Grundlegendes zum Zusammenführen von Datenbanktabellen
Beim Erstellen eines datenbankgestützten AusgabeblocksEin datenbankgestützter Inhaltsbereich, der Informationen eines oder mehrerer Datenbanksätze anzeigt., der eine Datenbank mit mehr als nur einer Tabelle enthält, verteilen sich die einzulesenden Informationen oft über zwei oder mehr Tabellen. Dann müssen Sie für den Block eine JOIN-Bedingung festlegen, die beschreibt, wie die Datensätze in den Tabellen zusammenpassen.
Nehmen Sie als Beispiel eine Datenbanktabelle “Aufträge”, in der jeder Datensatz Informationen zu einem Auftrag enthält, den einer Ihrer Kunden für ein bestimmtes Produkt platziert hat. Sie möchten ein Tabellenformular erstellen, das diese Aufträge tabellarisch auf einer Webseite anzeigt.
Wenn es sich bei Ihrer Datenbanktabelle “Aufträge” um eine einzelne Tabelle handelt, die nicht mit anderen Tabellen in der Datenbank verknüpft ist, müssen Sie nur Felder in der Tabelle “Aufträge” im Tabellenformular ausfüllen. Vermutlich gibt es in dieser Tabelle Felder für Auftragsdatum, Kundenname, Produktname, Menge etc. Und genau diese Felder sollen im Tabellenformular angezeigt werden.
Angenommen, es handele sich um eine ausgereiftere Datenbank: Die Tabelle “Aufträge” enthält das Feld “Kunde”, in dem keine Namen, sondern eine ID angegeben wird. Eine andere Tabelle in der Datenbank, z.B. mit dem Namen “Kunden”, beinhaltet für jede Kunden-ID Felder für Namen, Adressen, Telefonnummern usw. Wenn Sie dann nur Felder aus der Tabelle “Aufträge” für Ihr Tabellenformular verwenden sollen, würde das Tabellenformular anstelle von Namen Kunden-IDs anzeigen. Wenn das Tabellenformular allerdings Namen anzeigen soll, müssen Sie das mit dem Datenbankfeld “Aufträge.Kunden” verknüpfte AusgabeelementEin Element in einem Ausgabeblock, das den Inhalt eines Datenbankfeldes anzeigt. ändern, sodass es stattdessen auf das Feld “Kunden.Name” verweist.
Es reicht jedoch nicht, das Ausgabeelement einfach so zu verändern, dass das Feld “Kunden.Name” verwendet wird. Ohne zusätzliche Informationen kann der Server nicht wissen, wie Datensätze in der Tabelle “Kunden” mit Datensätzen der Tabelle “Aufträge” zusammenpassen, d.h. welcher Kundenname für einen bestimmten Auftragsdatensatz eingelesen werden muss. Eine JOIN-Bedingung bietet genau diese Information.
Eine JOIN-Bedingung legt die relevante Beziehung zwischen den beiden Datenbanktabellen fest. Sie besteht aus den Namen der beiden Felder zweier Tabellen, in der Mitte steht ein Gleichheitszeichen:
Tabelle_1.Feld_1 = Tabelle_2.Feld_2
Für unser Beispiel würde die entsprechende JOIN-Bedingung folgendermaßen lauten:
Aufträge.Kunden = Kunden.ID
Diese Gleichung bedeutet für den Server: Für jede Kunden-ID in der Tabelle “Aufträge” muss der Kundenname aus dem Datensatz der Tabelle “Kunden” eingelesen werden, der die gleiche ID-Nummer enthält.
JOIN-Bedingungen können mehrere durch “AND” getrennte Gleichungen enthalten. Mehrere Gleichungen sind erforderlich, wenn ein Ausgabeblock mehr als zwei Datenbanktabellen nutzt. Wenn die Datenbank “Aufträge” Kunden und Produkte als ID-Nummern enthält und das Tabellenformular die Produktnamen und Kundennamen anzeigen soll, müssen Sie das Feld “Namen” aus der Tabelle “Produkte” verwenden und die JOIN-Bedingung folgendermaßen ändern:
Aufträge.Kunde = Kunden.ID UND Aufräge.Produkt = Produkte.ID
Diese Gleichung bedeutet für den Server: Für jede Kunden-ID in der Tabelle “Aufträge” muss der Kundenname mit der gleichen ID aus dem Datensatz in der Tabelle “Kunden” eingelesen werden. Für jede Produkt-ID in der Tabelle “Aufträge” muss der Produktname mit der gleichen ID aus dem Datensatz in der Tabelle “Produkte” eingelesen werden.
Wenn Sie Felder aus mehreren Datenbanktabellen nutzen, müssen Sie im Schritt Datenbankfelder des Datenbank-Assistenten, nicht nur die Felder berücksichtigen, die im Ausgabeblock angezeigt werden, sondern auch alle in der JOIN-Bedingung enthaltenen Felder. In unserem Beispiel würden demnach folgende Datenbankfelder einbezogen:
In der Tabelle “Aufträge”:
- Aufträge.Datum
- Aufträge.Kunde
- Aufträge.Produkt
- Aufträge.Menge
In der Tabelle “Kunden”:
- Kunden.ID
- Kunden.Name
In der Tabelle “Produkte”:
- Produkte.ID
- Produkte.Name
So erstellen Sie einen Ausgabeblock mit Feldern aus mehreren Tabellen
- Starten Sie den Datenbank-Assistenten für den gewünschten Ausgabeblocktyp, und führen Sie die Schritte 1 und 2 durch.
- Fügen Sie in Schritt 3, Datenbankfelder, alle Felder hinzu, die folgende Kriterien erfüllen:
- Datenbankfelder mit Ausgabeelementen im Ausgabeblock
- Datenbankfelder, die in Beziehung zu den im Ausgabeblock eingeschlossenen Tabellen stehen
- Geben Sie in Schritt 4, Auswahlanweisung, die entsprechende JOIN-Bedingung im Feld Zusammenführen ein. (Wenn Sie neben dem Feld Zusammenführen auf die Schaltfläche … klicken, öffnet sich ein Menü der verfügbaren Datenbankfelder und Operatoren. Sie können einfach aus der Dropdownliste auswählen.)
- Entfernen Sie in Schritt 5, Blockelemente, die den Datenbankfeldern entsprechenden Ausgabeelemente, die nicht im Ausgabeblock angezeigt werden sollen. (Sie könnten z.B. die Ausgabefelder entfernen, die in der Datenbank numerischen ID-Feldern entsprechen.)
- Durchlaufen Sie die verbleibenden Schritte des Datenbank-Assistenten.
So ändern Sie einen Ausgabeblock mit Feldern aus mehreren Tabellen
- Klicken Sie mit der rechten Maustaste in das Formular, zeigen Sie auf Datenbank, und klicken Sie auf Formulareigenschaften.
- Klicken Sie auf die Registerkarte Datenbankfelder.
- Fügen Sie alle Felder hinzu, die folgende Kriterien erfüllen:
- Datenbankfelder mit Ausgabeelementen im Ausgabeblock
- Datenbankfelder, die in Beziehung zu
den im Ausgabeblock eingeschlossenen Tabellen stehen
- Klicken Sie auf die Registerkarte Auswahlanweisung.
- Geben Sie im Feld Zusammenführen die entsprechende JOIN-Bedingung ein, die zu den im Ausgabeelement enthaltenen Tabellen gehört. (Wenn Sie neben dem Feld Zusammenführen auf die Schaltfläche … klicken, öffnet sich ein Menü der verfügbaren Datenbankfelder und Operatoren. Sie können einfach aus der Dropdownliste auswählen.)
- Klicken Sie auf OK.
- Doppelklicken Sie auf den Platzhalter für ein Ausgabeelement, das auf ein anderes Datenbankfeld verweisen soll.
- Klicken Sie neben dem Feld Datenbankfeld auf die Schaltfläche …, und wählen Sie das dem gewünschten Datenbankfeld entsprechende Element aus. (Wenn das gewünschte Datenbankfeld “Kunden.Name” lautet, wählen Sie <f,Kunden.Name>.)
- Klicken Sie auf OK.
- Wiederholen Sie die Schritte 7bis 9 für jedes zu ändernde Ausgabeelement.