Datenbankjobs erstellen

Datenbankjobs über mehrere Tabellen

Top  Previous  Next

Datenbankjobs berechnen die verwendete Grunddatenmenge selbst nach folgenden Regeln:

1.Die Tabelle, zu welcher der Datenbankjob gehört, gilt als Primärtabelle.
2.Alle im Datenbankjob verwendeten Tabellen, die direkt oder indirekt eine Verknüpfung mit der Primärtabelle haben werden über die entsprechenden inner joins mit aufgenommen. Als Verknüpfungen zählen Koppel- und Relationsfelder sowie die im Datenmodell eingetragenen expliziten Verknüpfungen.
3.Falls weitere Tabellen im Datenbankjob verwendet werden, werden diese über ein vollständiges Kreuzprodukt mit aufgenommen.

Das Relations-Kommando

In seltenen Fällen ist diese automatische Verknüpfung nicht das, was man für einen Report benötigt. Sie können dann die Grunddatenmenge durch das Kommando relation selbst definieren. Hier können Sie z.B. Beziehungen zwischen Tabellen festlegen, die während des Datenbankjobs beachtet werden sollen. Das folgenden Beispiel verknüpft diejenigen Fahrzeuge mit dem Kunden, deren Modelljahr mit seinem Geburtsdatum übereinstimmt:

.relation KFZ[Modelljahr] = KUNDEN[(Jahr(Geboren))]

Mit Hilfe von virtuellen Tabellen sind Verknüpfungen einer Tabelle mit sich selbst möglich. Mit dem RELATION-Kommando kann man eine schon offene Tabelle unter einem anderen Namen ein zweites Mal öffnen:

.relation KUNDEN2 = KUNDEN

Dies enstpricht dem Erzeugen eines zweiten benannten Cursors für die Tabelle KUNDEN.

Mit einer Inklusion legen Sie schließlich fest, von welchen Tabellen auch dann Datensätze ausgegeben werden sollen, wenn keine verknüpften Datensätze in anderen Tabellen existieren. Eine Liste der Fahrzeuge mit den Käufern z.B. würde nur diejenigen Fahrzeuge ausdrucken, die auch wirklich verkauft worden sind. Mit dem Eintrag

.relation KUNDEN

kämen alle zur Ausgabe. Damit entspricht die Inklusion einem outer join auf der Seite der entsprechenden Tabelle.

Die drei beschriebenen Kommandos können Sie auch beliebig kombinieren. Sie müssen dann aber alle in einem einzigen Relations-Kommando unterbringen, da jedes RELATION alle vorhergehenden überschreibt:

.relation KUNDEN2 = KUNDEN, KUNDEN, KFZ[Modelljahr] = KUNDEN[(Jahr(Geboren))]

Siehe auch

relation