Abfrage mehrerer Tabellen (Joins) |
Anfang Zurück Vor |
Letzte Änderung 13.02.2014
In relationalen Datenmodellen werden Datensätze i.d.R. nicht in einer einzigen Tabelle abgespeichert, sondern über mehrere Tabellen verteilt, die dann miteinander in Beziehung stehen (Relation). Bei aufwändigeren Datenbankabfragen müssen daher meist mehrere Datenbank-Tabellen abgefragt (Joins) und die Daten zu einem gemeinsamen Abfrageergebnis zusammengeführt werden. Entsprechende SQL-Anweisungen können in der Praxis sehr komplex werden. Mit dem Query-Assistenten lassen sich jedoch selbst komplexeste Abfragen ganz leicht und schnell zusammen klicken.
Für die Abfrage über mehrere Tabellen müssen Sie zunächst jedoch ein ER-Diagramm anlegen, welches die Relationen zwischen den verwendeten Tabellen dokumentiert. In der Datenbank bereits gespeicherten Relationen können importiert werden. Mit den Informationen aus dem ER-Diagramm kann der Query Assistent eine hierarchische Baumstruktur generieren, sodass Sie für eine Abfrage über mehrere Tabellen nur noch systematisch alle Datenfelder anklicken müssen, die Sie abfragen möchten. Die notwendigen Join-Bedingungen werden automatisch generiert.
1.Geben Sie im Code-Editor die Anweisung XDEV.Query ein und drücken Sie Eingabe, sodass sich der Query-Assistent öffnet. 2.Wählen Sie unter Datenquelle und Ziel bei Quelle (Datenbank) die Datenquelle fahrzeugeDB aus. 3.Klicken Sie bei Quelle (Datenbank) die Datenbank-Tabelle FAHRZEUGE an, um alle Datenfelder dieser Tabelle zu selektieren. 4.Öffnen Sie den Zweig bei MODELL_ID <> MODELLE und selektieren Sie das Datenfeld MODELL. 5.Öffnen Sie den Zweig bei HERSTELLER_ID <> HERSTELLER und selektieren Sie das Datenfeld MARKE. 6.Lassen Sie sich eine Virtuelle Tabelle generieren, in die das Abfrageergebnis übertragen werden soll. Klicken Sie dazu bei Ziel (Virtuelle Tabelle) auf 7.Legen Sie fest, ob das Abfrageergebnis vor dem ersten Datensatz der Virtuellen Tabelle eingefügt, hinter dem letzten Datensatz angehängt oder ob ggf. existierende Daten einfach überschrieben werden sollen. Klicken Sie dazu bei Ziel (Virtuelle Tabelle) auf 8.Klicken Sie im Query-Assistenten auf OK, um den Assistenten zu schließen.
Das hinzujoinen von Datensatz IDs ist im Query-Assistent nur durch die Selektierung des Fremdschlüssels in der äußeren Tabelle möglich. Die Selektierung des Primärschlüssels in der inneren Tabelle führt dagegen zu einer Exception.
●Korrekte Selektierung Führt den Join wie gewünscht aus.
●Fehlerhafte Selektierung Führt zu einer Exception.
Sobald Sie im Query-Assistenten Datenfelder einer Datenbank-Tabelle selektieren, beginnt der Assistent automatisch mit der Suche nach einer geeigneten, namensgleichen Virtuellen Ziel-Tabelle und versucht die Datenfelder an Hand übereinstimmender Datenfeldnamen richtig zu mappen. Stellt der Assistent dabei fehlende Datenfelder in der Virtuellen Ziel-Tabelle fest, werden die Datenfelder, die nicht zugewiesen werden können, automatisch mit dem Warn-Symbol
Bei Joins können Sie festlegen, ob es sich um einen Inner, Left, Right oder Outer Join handeln soll. Standardmäßig definiert der Query-Assistent immer einen Inner-Join. Im rechten Bereich des Query-Assistenten bei Joins können Sie die automatisch generierten Join-Bedingungen darüber hinaus individuell anpassen.
try { XDEV.Query(new QueryFahrzeuge()); } catch(DBException e) { e.printStackTrace(); }
private static class QueryFahrzeuge extends Query |