|
Abfragen (SQL) - Query Commander |
|
Benutzerdefinierte Abfragen greifen direkt auf die Struktur der BaSYS Datenbank zu. Die Abfragen werden im sogenannten Query-Commander erstellt. Je nach Bedarf können Auswahl-, Aktualisierungs-, Anfüge- und / oder Löschabfragen erstellt werden. Jede benutzerdefinierte Abfrage kann im Barthauer Configuration Explorer oder extern als Dokument gespeichert werden. Die Abfrage-Ergebnisse können in beliebige Office-Dokumente exportiert werden. Fertiggestellte Abfragen können im Berichtsmanager verwendet werden.
Abschnitte der Hilfe
In der Hilfe werden folgende Abschnitte beschrieben:
In diesem Abschnitt geht es um folgende Themen:
Einige Abfragebeispiele ergänzen die Einführung in die beiden Datenbank-Abfrage-Sprachen.
In Abfragen werden keine Gänsefüßchen (") sondern ausschließlich Apostrophs (') genutzt.
In diesem Abschnitt geht es um folgende Themen:
-
SELECT-Anweisung
-
WHERE-Klausel
-
JOIN-Bedingung
-
GROUP BY-Anweisung
SQL ist die Datenbanksprache für eine Reihe von relationalen Datenbankmanagementsystemen (DBMS), wie SQL-Server und Oracle.
Um Daten aus der Datenbank abzufragen, werden SQL SELECT-Anweisungen genutzt. Eine SELECT-Anweisung ruft Informationen aus der Datenbank ab. Mit Hilfe der SELECT-Anweisung werden folgende Aufgaben erledigt:
● |
Auswahl (Selection) |
Sie können die Auswahlfunktionalität in SQL verwenden, um die Zeilen einer Tabelle auszuwählen, die Ihre Abfrage zurückgeben soll. Sie können verschiedene Kriterien verwenden, um die angezeigten Zeilen selektiv zu beschränken. |
● |
Projektion (Projection) |
Sie können die Projektionsfunktionalität in SQL verwenden, um die Spalten in einer Tabelle auszuwählen, die Ihre Abfrage zurückgeben soll. Sie können beliebig wenige oder viele Spalten aus der Tabelle auswählen. |
● |
Join |
Sie können die Join-Funktionalität in SQL verwenden, um Daten zusammenzustellen, die in verschiedenen Tabellen gespeichert sind, indem Sie die beiden Tabellen verknüpfen. |
Über die SELECT-Anweisung werden gewünschte Inhalte der Datenbank als Tabelle ausgegeben.
Übersicht
In ihrer einfachsten Form muss eine SELECT-Anweisung folgende Elemente enthalten:
-
Eine SELECT-Klausel, welche die anzuzeigenden Spalten festlegt
-
Eine FROM-Klausel, welche die Tabelle festlegt, welche die in der SELECT-Klausel aufgelisteten Spalten enthält.
Beispiel
Als Beispiel dient hier eine einfache Abfrage auf die Tabelle AbwKnoten:
|
SELECT |
{AbwKnoten}.{Bezeichnung}, {AbwKnoten}.{Kanalart}, {AbwKnoten}.{Tiefe}, {AbwKnoten}.{Sohlhöhe} |
|
FROM |
{AbwKnoten} AbwKnoten |
Die Beispielabfrage führt zu folgendem Ergebnis:
Bezeichnung |
Kanalart |
Tiefe |
Sohlhöhe |
53/01AP15 |
KM |
|
|
32/11 |
KM |
2,19 |
105,85 |
3019001 |
KS |
1,48 |
90,97 |
Alle Spalten wiedergeben
Um alle in der Tabelle befindlichen Spalten in der Abfrage wiederzugeben, müssen die Spalten nicht explizit bezeichnet werden. Das Zeichen "*" wählt automatisch alle Spalten der Tabelle. Beispiel für die Syntax:
|
SELECT * FROM |
{AbwKnoten} AbwKnoten |
Spaltennamen umbenennen
Bei der normalen Abfrage tragen die Spalten der Abfrage die ursprünglichen Tabellenspaltennamen. Diese Konvention ist nicht immer gewünscht beziehungsweise für die Datenwiedergabe nicht immer eindeutig. In diesem Fall besteht die Möglichkeit, Aliasnamen zu vergeben.
Beispielsweise kann der Spalte Tiefe der Aliasname Schachttiefe und der Spalte Bezeichnung der Aliasname Schachtbezeichnung gegeben werden. Die Aliasnamen wirken sich nur auf die Datenausgabe und nicht auf die Ursprungstabellen aus.
Beispiel
Beispiel für die Syntax:
|
SELECT |
{AbwKnoten}.{Bezeichnung} AS Schachtbezeichnung, {AbwKnoten}.{Tiefe} AS Schachttiefe |
|
FROM |
{AbwKnoten} AbwKnoten |
Die Beispielabfrage führt zu folgendem Ergebnis:
Schachtbezeichnung |
Schachttiefe |
32/11 |
2,19 |
3019001 |
1,48 |
84/05 |
2,21 |
Die von der Abfrage zurückgegebenen Zeilen können mit Hilfe der WHERE-Klausel eingeschränkt werden. Die WHERE-Klausel enthält eine Bedingung, die erfüllt werden muss. Die Bedingung folgt unmittelbar auf die FROM-Klausel.
In der Syntax:
-
WHERE beschränkt die Abfrage auf Zeilen, die eine Bedingung erfüllen
-
Bedingung besteht aus einem Spaltennamen, Ausdrücken, Konstanten und einem Vergleichsoperator
Beispiel
Als Beispiel eine Abfrage mit WHERE-Klausel auf die Tabelle AbwLeitung:
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwLeitung}.{Kanalart} |
|
FROM |
{AbwLeitung} AbwLeitung |
|
WHERE |
(({AbwLeitung}.{Typ} = 0 AND {AbwLeitung}.{Kanalart} = 'KR')) |
Die Einschränkung dieser Abfrage bezieht sich auf den Leitungstyp = 0. Die Leitungstypen unterscheiden sich wie folgt:
-
Typ 0 = Hauptleitung
-
Typ 1 = Anschlussleitung
Des weiteren wird noch auf die Kanalart gefiltert. In diesem Fall werden nur Regenwasserkanäle abgefragt. Die Beispielabfrage führt zu folgendem Ergebnis:
Bezeichnung |
Kanalart |
119032 |
KR |
119023 |
KR |
119043 |
KR |
120007 |
KR |
AND
In obigem Beispiel sind mehrere Einschränkungskriterien über den Operator AND verknüpft. Dadurch kann die Abfrage noch weiter eingeschränkt werden.
In bestimmten Fällen sollen Daten aus mehreren Tabellen verwendet werden. Falls diese Daten direkt aus Datenbanktabellen abgefragt werden, wird die JOIN-Bedingung verwendet.
Die Zeilen der abzufragenden Datenbanktabellen können über Werte verknüpft werden, die in bestimmten Spalten der Tabellen gemeinsam genutzt werden. Dabei handelt es sich meistens um die Werte der Primärschlüssel- und Fremdschlüsselspalten.
Um Daten aus mehreren Tabellen anzuzeigen, die zueinander in Beziehung stehen, kann eine einfache JOIN-Bedingung vor die WHERE-Klausel geschrieben werden.
Beispiel
Als Beispiel eine Abfrage auf die Tabellen AbwLeitung und AbwKnoten:
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwKnoten}.{Bezeichnung} as Zulauf, {AbwKnoten_1}.{Bezeichnung} as Ablauf, {AbwLeitung}.{Kanalart} |
|
FROM |
(( {AbwLeitung} AbwLeitung |
|
INNER JOIN |
{AbwKnoten} AbwKnoten ON {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id}) |
|
INNER JOIN |
{AbwKnoten} AbwKnoten_1 ON {AbwLeitung}.{IdRefEnd -AbwKnoten-} = {AbwKnoten_1}.{Id}) |
|
WHERE |
(({AbwLeitung}.{Kanalart} = 'KR' AND {AbwLeitung}.{Typ} = 0)) |
Die Beispielabfrage führt zu folgendem Ergebnis:
Bezeichnung |
Zulauf |
Ablauf |
Kanalart |
211070 |
211070 |
211071 |
KS |
211071 |
211071 |
211112 |
KS |
211073 |
211073 |
211095 |
KS |
211075 |
211075 |
211075SF01 |
KS |
211075B01 |
211075B01 |
211075K01 |
KS |
Abfrageergebnisse können nach Wert gruppiert werden. Eine Gruppierung unterliegt bestimmten Gesetzmäßigkeiten:
-
Die abgefragten Tabellenspalten müssen mit in die Gruppierung aufgenommen werden.
-
Funktionen wie SUM oder COUNT werden nicht in eine Gruppierung aufgenommen.
Beispiel
Als Beispiel eine Abfrage auf die Tabelle AbwLeitung:
|
SELECT |
{AbwLeitung}.{Material} AS Material, {AbwLeitung}.{Kanalart} AS Kanalart, SUM ({AbwLeitung}.{Länge} ) AS Gesamtlänge, COUNT ( * ) AS Anzahl |
|
FROM |
{AbwLeitung} AbwLeitung |
|
GROUP BY |
{AbwLeitung}.{Kanalart}, {AbwLeitung}.{Material} |
Die Beispielabfrage führt zu folgendem Ergebnis:
Material |
Kanalart |
Gesamtlänge |
Anzahl |
AZ |
|
6,9 |
3 |
AZ |
KR |
53,72 |
2 |
AZ |
KS |
859,05 |
33 |
B |
|
91,71 |
9 |
B |
KR |
2.077,87 |
58 |
In diesem Abschnitt geht es um folgende Themen:
Bei der Data Manipulation Language (DML) handelt es sich um ein Kernelement von SQL. DML-Anweisungen werden ausgeführt, um Daten in der Datenbank hinzuzufügen, zu aktualisieren oder zu löschen. Eine Sammlung von DML-Anweisungen, die eine logische Arbeitseinheit bilden, wird als Transaktion bezeichnet.
Die SELECT-Unterabfrage in der INSERT-Anweisung fügt in eine Tabelle Werte ein, die aus einer oder mehreren anderen Tabellen oder Sichten stammen. Das Verwenden der SELECT-Unterabfrage ermöglicht außerdem das gleichzeitige Einfügen mehrerer Zeilen.
Elemente
In ihrer einfachsten Form muss eine INSERT-Anweisung folgende Elemente enthalten:
-
Die INSERT INTO-Anweisung legt die zu bearbeitende Tabelle und ihre Spalten fest. Die Namen der mit Daten zu füllenden Spalten werden durch eine mit Kommas getrennte Liste in Klammern aufgeführt.
-
Die SELECT-Klausel enthält eine durch Kommas getrennte Liste der Werte, die in die Spalten eingefügt werden soll. Die Werte müssen dieselbe Reihenfolge besitzen wie die Auflistung in der INSERT INTO-Anweisung.
-
Die FROM-Klausel bezieht aus mindestens einer Tabelle oder Sicht die Daten für die zu ergänzende Tabelle. Optional definiert die Klausel Verknüpfungsbedingungen zwischen den Quelltabellen oder -sichten.
-
Die WHERE-Klausel gibt eine Suchbedingung an, mit der die Zeilen der Quelltabellen und -sichten definiert werden.
Übersicht
In vereinfachter Form kann die INSERT-Syntax so aussehen:
|
INSERT INTO |
table_or_view ({column}, {column}, ...) |
|
SELECT |
value, value.... |
|
FROM |
table_sources |
Beispiel
Die folgende INSERT-Anweisung fügt für eine Haltung einen Wartungseintrag in die Tabelle AbwMaintenance ein:
|
INSERT INTO |
{AbwMaintenance} ({Datum}, {NächstesDatum}, {Id}, {RefObjektId}, {RefObjekttyp}) |
|
SELECT |
'12.09.2004', '29.12.2004', NewId ( ), {AbwLeitung}.{Id}, {AbwLeitung}.{Objekttyp} |
|
FROM |
( {AbwLeitung} AbwLeitung |
|
LEFT JOIN |
{AbwMaintenance} AbwMaintenance ON {AbwLeitung}.{Id} = {AbwMaintenance}.{RefObjektId}) |
|
WHERE |
({AbwLeitung}.{Bezeichnung} like '[Bezeichnung]') |
Nachdem die Tabellen erstellt und Daten hinzugefügt wurden, wird das Ändern oder Aktualisieren der Daten in den Tabellen zu einem täglichen Routineprozess bei der Datenbankverwaltung. Eine UPDATE-Anweisung kann zum Aktualisieren von Daten in bestimmten Zeilen einer Tabelle oder Sicht verwendet werden.
Elemente
In ihrer einfachsten Form muss eine Update-Anweisung folgende Elemente enthalten:
-
Die Update-Anweisung legt die zu bearbeitende Tabelle fest.
-
Die SET-Klausel enthält eine durch Kommata getrennte Liste der zu aktualisierenden Spalten sowie den neuen Wert jeder Spalte im Format column_name = expression. Der über die Ausdrücke definierte Wert kann Elemente (beispielsweise Konstanten) sowie aus der Spalte einer anderen Tabelle / Sicht gewählte oder über einen komplexen Ausdruck berechnete Werte umfassen.
-
Die FROM-Klausel bezieht aus mindestens einer Tabelle oder Sicht die Daten für die zu ergänzende Tabelle. Optional definiert die Klausel Verknüpfungsbedingungen zwischen den Quelltabellen oder -sichten.
-
Die WHERE-Klausel gibt eine Suchbedingung an, mit der die Zeilen der Quelltabellen und -sichten definiert werden, um die Werte für die Ausdrücke in der SET-Klausel bereitzustellen.
Beispiele
Die folgende UPDATE-Anweisung fügt für jeden Knoten einen Kommentar 'Testeintrag' ein:
|
UPDATE |
{AbwKnoten} |
|
SET |
{Kommentar} = 'Testeintrag' |
|
FROM |
{AbwKnoten} AbwKnoten |
|
WHERE |
({AbwKnoten}.{Status} = [Status]) |
Erläuterungen
Die SET-Klausel gibt die zu ändernden Spalten und deren neue Werte vor. Die Spaltenwerte werden in den Zeilen mit den per SET ermittelten Werten aktualisiert, die mit der Suchbedingung der WHERE-Klausel übereinstimmen.
Falls keine WHERE-Klausel angegeben ist, werden alle Zeilen aktualisiert. Der in der WHERE-Klausel angegebene Wert [Status] ist ein Parameter, der direkt auf die betreffende Auswahlliste zugreift. Dieses Thema wird im Abschnitt Parameter weiter ausgeführt.
Unterabfragen
Die in der SET-Klausel verwendeten Ausdrücke können auch Unterabfragen sein, die nur einen Wert zurückgeben:
|
UPDATE |
{AbwKnoten} |
|
SET |
{Kommentar} = ( |
|
SELECT |
{AbwKnoten}.{Kommentar} |
|
FROM |
{AbwKnoten} AbwKnoten |
|
WHERE |
({AbwKnoten}.{Bemerkung} = 'Test1')) |
|
FROM |
{AbwKnoten} AbwKnoten |
|
WHERE |
({AbwKnoten}.{Bezeichnung} = '119010') |
Diese Unterabfrage gibt den Wert der Spalte Kommentar zurück, und zwar von dem Datensatz, der in der Spalte Bemerkung den Wert Test1 besitzt.
Die DELETE-Anweisung entfernt eine Zeile oder mehrere Zeilen einer Tabelle oder Sicht.
Übersicht
In vereinfachter Form kann die DELETE-Syntax so aussehen:
|
DELETE |
table_or_view |
|
FROM |
table_sources |
|
WHERE |
search_condition |
Erläuterungen
Der Ausdruck table_or_view steht für den Namen einer Tabelle oder Sicht, aus der Zeilen gelöscht werden sollen:
-
Alle Zeilen in table_or_view, welche die Suchbedingungen der WHERE-Klausel erfüllen, werden gelöscht. Ist keine WHERE-Klausel angegeben, werden alle Zeilen in table_or_view gelöscht.
-
Die FROM-Klausel gibt zusätzliche Tabellen / Sichten und Verknüpfungsbedingungen an, die von den Prädikaten in der Suchbedingung der WHERE-Klausel zur Kennzeichnung der aus table_or_view zu löschenden Zeilen verwendet werden können.
-
Zeilen werden nicht aus den in der FROM-Klausel angegebenen Tabellen gelöscht, sondern lediglich aus der in table_or_view angegebenen Tabelle.
-
Tabellen, aus denen alle Zeilen entfernt wurden, verbleiben in der Datenbank. Die DELETE-Anweisung löscht ausschließlich Zeilen aus der Tabelle.
Wichtiger Hinweis
Aus der BaSYS-Datenbank dürfen auf keinen Fall Tabellen gelöscht werden, weil damit die Datenbankstruktur zerstört würde!
Beispiel
Folgende DELETE-Anweisung löscht eine Haltung mit einer bestimmten Bezeichnung aus der Datenbank. Die Bezeichnung der zu löschenden Leitung wird über einen Parameter an die DELETE-Anweisung übergeben:
|
DELETE |
{AbwLeitung} |
|
FROM |
{AbwLeitung} AbwLeitung |
|
WHERE |
({AbwLeitung}.{Bezeichnung} = '[Bezeichnung]') |
Die Bezeichnung kann auch direkt anstelle des Parameters eingegeben werden:
|
DELETE |
{AbwLeitung} |
|
FROM |
{AbwLeitung} AbwLeitung |
|
WHERE |
({AbwLeitung}.{Bezeichnung} = '0815/1') |
Die nachstehende DELETE-Anweisung löscht alle Inhalte aus der Tabelle AbwMaintenance:
|
DELETE |
{AbwMaintenance} |
|
FROM |
{AbwMaintenance} AbwMaintenance |
Für Abfragen auf Oracle gelten einige Besonderheiten, auf die in diesem Abschnitt kurz eingegangen wird.
JOIN-Bedingung
Bei der Erstellung von DML-Abfragen, die auf BaSYS-Datenbestände in einem Oracle Datenbankmanagementsystem angewendet werden, dürfen in der Datenherkunft keine JOIN Klauseln eingesetzt werden. Oracle unterstützt diese Syntax nicht.
SELECT FROM
Anstelle der JOIN Klauseln sind SELECT Ausdrücke zu verwenden, um auf Inhalte anderer Tabellen zuzugreifen.
Vorsicht!
Damit der Query Manager die Abfrage verarbeiten kann, muss dennoch eine FROM-Klausel vorhanden sein, welche die Zieltabelle der Abfrage enthält.
Beispiel
Folgende SQL Server Syntax soll auf einem Oracle Server laufen:
|
UPDATE |
{AbwKnoten} SET {IdRef -AllgStrasse-} = {AbwLeitung}.{IdRef -AllgStrasse-} |
|
FROM |
( {AbwKnoten} AbwKnoten INNER JOIN {AbwLeitung} AbwLeitung ON {AbwKnoten}.{Id} = {AbwLeitung}.{IdRefAnf -AbwKnoten-}) |
|
WHERE |
(({AbwKnoten}.{IdRef -AllgGemeinde-} = '[aktGV]' AND {AbwKnoten}.{IdRef -AllgStrasse-} is null)) |
Damit dies möglich ist, wird die Syntax entsprechend angepasst:
|
UPDATE |
{AbwKnoten} SET {IdRef -AllgStrasse-} = (SELECT Max ({AbwLeitung}.{IdRef -AllgStrasse-} ) |
|
FROM |
{AbwLeitung} AbwLeitung |
|
WHERE |
(({AbwLeitung}.{Typ} = 0 AND {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id}))) |
|
FROM |
{AbwKnoten} AbwKnoten |
|
WHERE |
(({AbwKnoten}.{IdRef -AllgGemeinde-} = '[aktGV]' AND {AbwKnoten}.{IdRef -AllgStrasse-} is null)) |
Die umgeformte Abfrage kann jetzt gleichzeitig für den Microsoft SQL Server und Oracle eingesetzt werden.
In diesem Abschnitt geht es um folgende Themen:
Die in diesem Abschnitt beschriebenen Beispiele können sofort genutzt werden. So geht's:
-
Die Syntax der Abfrage wird zunächst in den Arbeitsbereich SQL-Editor kopiert.
-
Beim ersten Ausführen der Abfrage erscheint eine Meldung, da die Verbindung zu den Tabellen noch nicht erstellt wurde.
-
Nach Bestätigung der Meldung werden alle Tabellen und Beziehungen eingebunden.
-
Die neu erstellte Abfrage kann nun gespeichert und anschließend erneut ausgeführt werden.
Im Standardumfang des Query-Managers befindet sich die Abfrage Einzugsflächen. Diese Abfrage würde in ihrer ursprünglichen Form keine Geometrien zurückgeben, da der Abfrage keine Geometriespalte zugeordnet ist.
Zuordnung der Geometriespalte
So geht's:
-
Wahl der Spalte {AbwEinzugsflaeche}.{Geometries} im Arbeitsbereich Beziehungen/Tabellen.
-
Über die Schaltfläche Eigenschaften der Werkzeugleiste wird der Auswahlliste Geometrie-Spalte die Tabellenspalte {AbwEinzugsflaeche}.{Geometries} zugewiesen.
-
Die Abfrage wird danach gespeichert und ausgeführt.
-
Sobald im Arbeitsbereich Ergebnisse Daten erscheinen, wird die Geometrie-Schaltfläche aktiv. Die Geometrien können nun abgerufen werden.
Weitere Informationen befinden sich im Abschnitt Ergebnisse. Die Syntax der Abfrage lautet:
|
SELECT |
{AbwEinzugsflaeche}.{Bezeichnung}, {AbwEinzugsflaeche}.{Gesamtflaeche}, {AbwEinzugsflaeche}.{BefestigteFlaeche}, {AbwEinzugsflaeche}.{Befestigungsgrad}, {AbwEinzugsflaeche}.{abefId}, {AbwEinzugsflaeche}.{Geometries} |
|
FROM |
{AbwEinzugsflaeche} AbwEinzugsflaeche |
Im Folgenden sind Beispiele weiterer Abfragen mit Geometrien zu finden.
Haltungsgeometrien
Abfrage auf die Geometrien der Haltungen:
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwLeitung}.{Id}, {AbwLeitung}.{Objekttyp}, {AbwLeitung}.{Geometries}, {AbwKnoten}.{Bezeichnung} AS Anfangsknoten, {AbwKnoten_1}.{Bezeichnung} AS Endknoten, {AbwLeitung}.{Kanalart} |
|
FROM |
(( {AbwLeitung} AbwLeitung |
|
INNER JOIN |
{AbwKnoten} AbwKnoten ON {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id}) |
|
INNER JOIN |
{AbwKnoten} AbwKnoten_1 ON {AbwLeitung}.{IdRefEnd -AbwKnoten-} = {AbwKnoten_1}.{Id}) |
|
WHERE |
(({AbwLeitung}.{Kanalart} = 'KR' AND {AbwLeitung}.{Typ} = 0)) |
Für die Abfrage sind folgende Synchronizer-Optionen erforderlich:
Synchronizer
|
In der gezeigten Abfrage ist der Leitungstyp über die WHERE-Klausel auf 0 gesetzt:
-
Dadurch wird auf Haltungen gefiltert.
-
Für Anschlussleitungen ist der Typ auf 1 zu setzen.
-
Zur Abfrage aller Leitungstypen entfällt die WHERE-Klausel.
Knotengeometrien
In dieser Abfrage wird nicht zwischen den Knotentypen unterschieden.
|
SELECT |
{AbwKnoten}.{Bezeichnung}, {AbwKnoten}.{Id}, {AbwKnoten}.{Objekttyp}, {AbwKnoten}.{Geometries} |
|
FROM |
{AbwKnoten} AbwKnoten |
Für diese Abfrage sind die selben Synchronizer-Eigenschaften wie o a. vorzunehmen, mit dem Unterschied, dass sich die Tabelle geändert hat.
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwKnoten}.{Bezeichnung} as Zulauf, {AbwKnoten_1}.{Bezeichnung} AS Ablauf |
|
FROM |
(( {AbwKnoten} AbwKnoten |
|
INNER JOIN |
{AbwLeitung} AbwLeitung ON {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id}) |
|
INNER JOIN |
{AbwKnoten} AbwKnoten_1 ON {AbwLeitung}.{IdRefEnd -AbwKnoten-} = {AbwKnoten_1}.{Id}) |
|
WHERE |
({AbwLeitung}.{Id} in ([Bezeichnung] )) |
|
ORDER BY |
{AbwLeitung}.{Bezeichnung} ASC |
Im Folgenden werden Abfragen mit Inner und Left und Right Join vorgestellt.
Inner Join
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwKnoten}.{Bezeichnung} as Zulauf, {AbwKnoten_1}.{Bezeichnung} as Ablauf, {AbwLeitung}.{Kanalart} |
|
FROM |
(( {AbwLeitung} AbwLeitung |
|
INNER JOIN |
{AbwKnoten} AbwKnoten ON {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id}) |
|
INNER JOIN |
{AbwKnoten} AbwKnoten_1 ON {AbwLeitung}.{IdRefEnd -AbwKnoten-} = {AbwKnoten_1}.{Id}) |
|
WHERE |
(({AbwLeitung}.{Kanalart} = '[Kanalart]' AND {AbwLeitung}.{Typ} = 0)) |
|
ORDER BY |
{AbwLeitung}.{Bezeichnung} ASC |
Left Join
Es werden alle Leitungen angezeigt, auch wenn keine Straße der Leitung zugeordnet ist.
|
SELECT |
{AbwLeitung}.{Bezeichnung} AS Haltungsbezeichnung, {AllgStrasse}.{Name} AS Straßenname |
|
FROM |
( {AbwLeitung} AbwLeitung |
|
LEFT JOIN |
{AllgStrasse} AllgStrasse ON {AbwLeitung}.{IdRef -AllgStrasse-} = {AllgStrasse}.{Id}) |
|
WHERE |
({AbwLeitung}.{Typ} = 0) |
Right Join
Es werden alle Straßennamen angezeigt, auch wenn keine Leitung der Straße zugeordnet ist.
|
SELECT |
{AbwLeitung}.{Bezeichnung} AS Haltungsbezeichnung, {AllgStrasse}.{Name} AS Straßenname |
|
FROM |
( {AbwLeitung} AbwLeitung |
|
RIGHT JOIN |
{AllgStrasse} AllgStrasse ON {AbwLeitung}.{IdRef -AllgStrasse-} = {AllgStrasse}.{Id}) |
In dieser Abfrage befindet sich eine Unterabfrage mit der Funktion "MAX". Sie dient dazu, für jede Haltung das jeweils neueste Untersuchungsdatum Abzufragen.
|
SELECT |
{AbwLeitung}.{Bezeichnung}, {AbwLeitung}.{Id}, {AbwLeiInspektion}.{Datum} |
|
FROM |
( {AbwLeitung} AbwLeitung |
|
INNER JOIN |
{AbwLeiInspektion} AbwLeiInspektion ON {AbwLeitung}.{Id} = {AbwLeiInspektion}.{IdRef -AbwLeitung-}) |
|
WHERE |
({AbwLeiInspektion}.{Datum} = ( |
|
SELECT |
MAX ({AbwLeiInspektion}.{Datum}) From {AbwLeiInspektion} AbwLeiInspektion |
|
WHERE |
{AbwLeiInspektion}.{IdRef -AbwLeitung-} = {AbwLeitung}.{Id})) |
|
ORDER BY |
({AbwLeitung}.{Bezeichnung}) |
In diesem Abschnitt der Hilfe ist der Aufbau der Benutzeroberfläche grob schematisch dargestellt. Von dort führen Verknüpfungen zu den relevanten Abschnitten der Hilfe weiter.
Dokument bearbeiten |
Kopfleiste. |
||||||||||||
|
|||||||||||||
|
|||||||||||||
|
Arbeitsbereiche. |
Globale Werkzeugleiste
|
|
Zugehörige Symbole |
Über die Symbole der Werkzeugleiste können die Voreinstellungen gespeichert sowie alle nach dem letzten Speichern erfolgten Änderungen zurückgesetzt werden.
Über die Funktionstasten werden die Arbeitsbereiche der Benutzeroberfläche ein- und ausgeschaltet:
-
Für jeden eingeschalteten Arbeitsbereich ist das relevante Werkzeug in der Werkzeugleiste hervorgehoben.
-
Jeder Arbeitsbereich kann einzeln auf diese Weise konfiguriert werden.
Folgende Funktionen stehen zur Verfügung:
● |
|
Beziehungen und Tabellen ein / aus |
● |
|
Abfrage / Ansicht ein / aus |
● |
|
SQL-Editor ein / aus |
● |
|
Ergebnisse ein / aus |
Über die Werkzeugleiste werden die Ansichten der Arbeitsbereiche und die Bearbeitung der einzelnen SQL- und DML-Anweisungen gesteuert.
Ausführen
|
Zugehöriges Symbol |
Die aktuell bearbeitete oder aktivierte Anweisung wird ausgeführt.
Gruppieren
|
Zugehöriges Symbol |
Ein- oder Ausschalten der Spalte "Funktion" im Arbeitsbereich Abfrage / Ansicht.
Abfrageart
|
Zugehöriges Symbol |
Auswahl der Abfrageart durch Klick auf den Pfeil neben dem Symbol:
● |
|
SQL |
SELECT-Anweisung. Die Daten werden aus der Datenbank abgefragt. Nach Ausführung der Abfrage werden die Daten im Arbeitsbereich Ergebnisse ausgegeben. |
● |
|
DML |
UPDATE-Anweisung. In der Datenbanktabelle werden Zeilen geändert und / oder ergänzt. |
● |
|
DML |
INSERT-Anweisung. In der Datenbanktabelle werden Zeilen eingefügt. |
● |
|
DML |
DELETE-Anweisung. Aus der Datenbanktabelle werden Zeilen gelöscht. |
Parameter
|
Zugehöriges Symbol |
Ein Formular zur Erstellung und Bearbeitung von Parametern wird geöffnet.
Eigenschaften
|
Zugehöriges Symbol |
Ein Formular zur Erstellung und Bearbeitung der Eigenschaften / Optionen wird geöffnet.
Ausdruck
|
Zugehöriges Symbol |
Ein Formular zur Erstellung und Bearbeitung von Ausdrücken wird geöffnet.
Der Arbeitsbereich besitzt eine Registerleiste zum Umschalten zwischen zwei Ansichten.
Die beiden Register werden in diesem Abschnitt anhand des Abfragebeispiels Wasserknoten nach Armatur beschrieben.
Zwischen zwei Tabellenzeilen können fünf unterschiedliche Beziehungen definiert werden:
● |
|
INNER JOIN |
Werte, die beide Zeilen gemeinsam besitzen (Schnittmenge). |
● |
|
LEFT JOIN |
Werte, die beide Zeilen gemeinsam besitzen plus die verbleibenden Werte der linken Zeile. |
● |
|
RIGHT JOIN |
Werte, die beide Zeilen gemeinsam besitzen plus die verbleibenden Werte der rechten Zeile. |
● |
|
FULL JOIN |
Werte, welche die linke oder die rechte Zeile besitzt (Vereinigungsmenge). |
● |
|
CROSS JOIN |
Alle möglichen Beziehungen zwischen den Werten der linken und der rechten Zeile. |
Die in der Liste dargestellten Symbole werden in diesem Arbeitsbereich automatisch in Abhängigkeit von den gewählten Beziehungen gesetzt. Gemäß folgender Skizze besitzt das Abfragebeispiel ausschließlich LEFT JOIN - Beziehungen:
VsKnoten - AllgStrasse |
Aktuell gewählte Beziehung. |
||||||||||||
|
Rechts neben der Liste befindet sich das Detailformular der gewählten Beziehung. |
||||||||||||
|
Registerleiste. |
Im Detailformular werden alle Definitionen der in der Liste gewählten Beziehung angezeigt. Im Beispiel ist dies die Beziehung VsKnoten - AllgStrasse.
|
|
|
|
In diesem Bereich wird die Art der Beziehung definiert. |
||||||||||
Feldbeziehungen
|
|
|
|
Dieser Bereich stellt die aktuellen Feldbeziehungen dar. Am rechten Rand befindet sich die Werkzeugleiste. |
Art der Beziehung
|
Zugehöriges Symbol |
Die Art der Beziehung wird über drei Kontrollkästchen definiert. Im Beispiel ist ein Häkchen gesetzt, und zwar im oberen Kontrollkästchen. Somit handelt es sich definitionsgemäß um eine LEFT JOIN - Beziehung.
Feldbeziehungen
|
Zugehöriges Symbol |
Links befindet sich eine Auswahlliste der möglichen Feldbeziehungen, in der Mitte die mögliche Verknüpfung, rechts die Auswahlliste der möglichen Felder.
Folgende Funktionen sind nutzbar:
● |
|
Neu |
Ergänzt in der Anweisung eine weitere Beziehung. |
● |
|
Löschen |
Löscht die aktive Beziehung aus der Liste. |
● |
|
Experten-Modus |
Wechselt zwischen der Standardansicht und der Experten-Ansicht. |
Experten-Modus
|
Zugehöriges Symbol |
Durch die gezeigte Schaltfläche ändert sich die Ansicht des Arbeitsbereiches Beziehungen. Unter Feldbeziehungen wird an Stelle der drei Auswahllisten ein Textfenster geöffnet.
Feldbeziehungen
|
|
|
Hier können die Beziehungen zwischen den Tabellen direkt eingegeben werden. Bereits vorhandene Beziehungen werden in ihrer SQL-Syntax angezeigt. Durch den erneuten Klick auf die Schaltfläche wird in die Normalansicht zurück geschaltet.
Beispiel
Das Beispiel zeigt eine Beziehung zwischen den Tabellen VsKnoten und AllgStrasse. Die Spalte IdRef -AllgStrasse- der Tabelle VsKnoten ist mit der Spalte Id der Tabelle AllgStrasse gleich gesetzt. Die Feldbeziehungen sind über die Auswahllisten nachträglich veränderbar. Alle Tabellenspalten der jeweiligen Tabelle sind hier anwählbar, um eigene Beziehungen zu erstellen.
Im diesem Bereich sind alle für die Beziehungen genutzten Tabellen gelistet.
|
|||||||||||||||||
VsKnoten |
Aktuell gewählte Tabelle. |
||||||||||||||||
|
Rechts neben der Liste befinden sich die Tabellenspalten. |
||||||||||||||||
|
Registerleiste. |
Folgende Funktionen sind nutzbar:
● |
|
Tabellen hinzufügen |
Fügt neue Tabellen für Ihre Abfrage hinzu. Diese Funktion kann auch im Register Beziehungen genutzt werden. |
● |
|
Tabelle löschen |
Löscht die markierte Tabelle aus der Auswahl. |
● |
|
Nach unten |
Die gewählte Tabelle wird in der Navigation weiter nach oben geschoben. |
● |
|
Nach oben |
Die gewählte Tabelle wird in der Navigation weiter nach unten geschoben. |
Die gewünschten Tabellenspalten sind über Kontrollkästchen aktivierbar. Die Skizze zeigt einen Ausschnitt zur Tabelle VsKnoten.
Bezeichnung |
||||||||
|
Die gewählten Spalten werden automatisch in die Abfrage integriert und erscheinen in den Arbeitsbereichen Abfrage / Ansicht und SQL-Editor. Dort erfolgt die weitere Bearbeitung.
In diesem Arbeitsbereich befinden sind alle über Beziehungen / Tabellen aktivierten Tabellenspalten innerhalb einer Listenansicht. Dort kann die SQL-Anweisung weiter editiert werden. Die Spalten der Listenansicht werden abhängig von der definierten SQL-Anweisung auf drei Arten angeordnet.
Datenbankabfrage
Für eine Datenbankabfrage mit SELECT-Anweisung werden die hier skizzierten Spalten dargestellt:
Datenbankabfrage mit Gruppierungen
Für eine Datenbankabfrage mit SELECT-Anweisung und aktiver Schaltfläche Gruppieren werden die hier skizzierten Spalten dargestellt:
|
Spalte |
Alias |
Ausgabe |
Sortierungsart |
Sortierreihenfolge |
Kriterien |
Oder... |
Oder... |
In der Spalte Funktion wird die Art der Gruppierung definiert.
DML-Anweisung
Für eine DML-Anweisung (INSERT, UPDATE und DELETE) werden die hier skizzierten Spalten dargestellt:
|
Sortierungsart |
Sortierreihenfolge |
Kriterien |
Oder... |
Oder... |
Anstelle der Spalten Spalte, Alias und Ausgabe sind die Spalten Spalte/Zuweisung und Zielfeld sichtbar.
Spaltenübersicht
Die Listenansichten verfügen über die in diesem Abschnitt beschriebenen Spalten.
Spalte
|
Zugehöriges Symbol |
Je Zeile kann eine Datenbankspalte über die Auswahlliste gewählt werden.
Die betreffende Tabellenspalte erhält im Arbeitsbereich Ergebnisse den Alias-Namen. Falls kein Alias-Name festgelegt ist, wird dort der ursprüngliche Spaltenname ausgegeben..
Ausgabe
|
Zugehöriges Symbol |
Bei gesetztem Häkchen wird die betreffende Tabellenspalte im Arbeitsbereich Ergebnisse ausgegeben.
Spalte/Zuweisung
|
Zugehöriges Symbol |
An dieser Stelle wird die Spalte aus der Auswahlliste übernommen, die bei einer INSERT-, UPDATE- oder DELETE-Anweisung automatisch in die gewünschte Tabellenspalte eingetragen werden soll.
Zielfeld
|
Zugehöriges Symbol |
Über das Zielfeld wird die Tabellenspalte gewählt, in die der Wert übergeben werden soll. Die Auswahlliste bietet die Tabellenspalten aller in die Anweisung eingebundenen Tabellen an. Um beispielsweise den Wert Test in die Tabellenspalte Kommentar einzutragen, würde die Anweisung UPDATE folgende SQL-Syntax generieren:
SET {Kommentar} = 'Test'
Sortierungsart
|
Zugehöriges Symbol |
Über die Auswahlliste können folgende Sortierungsarten bestimmt werden:
-
Aufsteigend
-
Absteigend
-
Keine
Über Ganzzahlen kann die Reihenfolge der Sortierung vorgegeben werden. Bei fehlenden Eingaben wird in der Rangfolge Aliasname - Spaltenname sortiert.
Funktion
|
Zugehöriges Symbol |
Für eine Datenbank-Abfrage mit Gruppierungen sind folgende Konventionen möglich:
-
Bedingung
-
Gruppierung
-
Ausdruck
Die Kriterien beschreiben die WHERE-Klausel einer SQL-Anweisung. Das Kriterium, beispielsweise is null kann direkt in die Spalte eingeben oder über den Ausdruckseditor erstellt werden.
Bei Nichterfüllung eines Kriterium greift die Abfrage auf das in der nächsten Spalte Oder... definierte Kriterium zurück. Zum Beispiel soll eine Abfrage alle Schmutzwasserhaltungen (Spalte: {AbwLeitung}.{Kanalart} -> Kriterien: "= 'KS' "), bei Nichterfüllung alle Mischwasserleitungen (Spalte: {AbwLeitung}.{Kanalart} -> Kriterien: "= 'KS' " -> Oder...: "= 'KM' ") wiedergeben.
In diesem Arbeitsbereich befindet sich die SQL-Anweisung in ihrer reinen Syntax. Aus allen in den Arbeitsbereichen Beziehungen / Tabellen und Abfrage / Ansicht gewählten und zugewiesenen Tabellen, Spalten sowie Beziehungen wird im SQL-Editor eine SQL-Befehlfolge synthetisiert.
SELECT {VsKnoten}.{Bezeichnung}, (SELECT DISTINCT {PicklistItem}.{Description} FROM ( {gePicklist} Picklist INNER JOIN {gePicklistItem} PicklistItem ON {Picklist}.{Id} = {PicklistItem}.{IdRef -gePicklist-}) |
Bei dem SQL-Editor handelt es sich um einen aktiven Arbeitsbereich. Alle in diesem Arbeitsbereich durchgeführten Änderungen wirken sich direkt auf die Arbeitsbereiche Beziehungen / Tabellen und Abfrage / Ansicht aus. Die SQL-Befehlsfolge kann direkt in den Editor eingegeben oder aus der Zwischenablage in einen vorhandenen String eingefügt werden.
Die Anweisungen können auch ohne den SQL-Editor erstellt werden. Zur Übersicht und Kontrolle wird aber empfohlen, den SQL-Editor einzublenden.
In diesen Arbeitsbereich werden die Ergebnisse der Datenbankabfrage ausgegeben. Die Ergebnisse von DML-Anweisungen werden nicht angezeigt.
|
|||||||||||
|
|||||||||||
|
Tabellarische Ausgabe der Ergebnisse. |
Folgende Funktionen sind nutzbar:
● |
|
|
Das aktuelle Abfrageergebnis kann direkt aus dem Arbeitsbereich heraus gedruckt werden. |
● |
|
Export nach Excel |
Das aktuelle Abfrageergebnis wird nach Excel übergeben. Sind keine Datensätze in der Ergebnistabelle markiert, werden alle Daten übergeben. Ist eine Spalte markiert, wird nur diese Spalte übergeben. Dasselbe gilt für markierte Zeilen. |
● |
|
Export nach Word |
Das aktuelle Abfrageergebnis wird nach Word übergeben. Sind keine Datensätze in der Ergebnistabelle markiert, werden alle Daten übergeben. Ist eine Spalte markiert, wird nur diese Spalte übergeben. Dasselbe gilt für markierte Zeilen. |
● |
|
Kopieren |
Diese Funktion ermöglicht es, markierte Datensätze in andere Anwendungen zu kopieren. |
● |
|
Aufsteigend |
Die markierte Ergebnisspalte kann nachträglich aufsteigend sortiert werden. |
● |
|
Absteigend |
Die markierte Ergebnisspalte kann nachträglich absteigend sortiert werden. |
● |
|
Navigation |
Für die Navigation durch die Datensätze stehen Ihnen die selben Schaltflächen zur Verfügung, wie sie in Access-Anwendungen zu finden sind. Mit den beiden äußeren Schaltflächen navigieren Sie zum jeweils ersten und letzten Datensatz, mit den beiden inneren navigieren Sie jeweils einen Datensatz vor oder zurück. |
● |
|
Connector |
Das Abfrageergebnis können Sie über den Connector in andere BaSYS-Module übergeben. Gemäß Ihrer Freischaltung und Synchronizer-Einstellungen bekommen Sie verschiedene BaSYS-Module angeboten. Voraussetzung dafür ist, das die ID- und die Objekttyp-Spalte über die Eigenschaften für den Synchronizer zugewiesen sind. |
● |
|
Geometrie |
Die Geometrien werden nicht als Datenbanktabelle sondern als XML-Dokument gespeichert. Dieses Dokument wird über die Tabellenspalte Geometries abgefragt. Falls die Abfrage Geometrien enthält, wird diese Schaltfläche aktiv. Die Ergebnisse können nach Excel und Word exportiert oder in die Zwischenablage kopiert werden. |
Die Ergebnisausgabe kann nachträglich gruppiert werden. Dazu kann die zu gruppierende Spaltenüberschrift per Drag & Drop in das Gruppierfeld gezogen werden. Die Gruppierung wird beim Export der Daten nach Excel, Word oder in die Zwischenablage nicht übernommen.
Parameter
|
Zugehöriges Symbol |
Die Werteübergabe mit Hilfe von Parametern ist vor allem für Anweisungen sinnvoll, die weiter verwendet werden sollen. Dies erspart das nachträgliche Editieren der Anweisungen. Die erstellten Parameter werden nicht in einer Bibliothek, sondern anweisungsbezogen im skizzierten Formular verwaltet.
Parameter |
Kopfleiste. |
|||||||||
|
||||||||||
Parameterliste |
Parameterliste mit: |
|||||||||
|
|
Über * werden neue Parameter in der Liste ergänzt.
Verwendung der Parameter
Es gibt zwei Möglichkeiten, erstellte Parameter in eine Abfrage einzubinden:
-
Manuelle Integration des Parameters in die SQL-Anweisung
-
Verwendung von Ausdrücken. Diese werden im Abschnitt zum Ausdruckseditor näher beschrieben.
Bei Ausführung der Abfrage erscheint abhängig vom gewählten Parametertyp ein zugehöriges Formular zur Auswahl oder Eingabe der erforderlichen Parameterwerte.
Folgende Funktionen sind nutzbar:
● |
|
Parameterbearbeitung Beenden. Bei nicht gespeicherten Änderungen erscheint eine Meldung. |
● |
|
Abbruch ohne speichern. |
● |
|
Speichern aller Änderungen. |
● |
|
Rückgängig (Alle Änderungen bis zum letzten Speichern). |
● |
|
Löschen des markierten Parameters. |
● |
|
Funktionalitätstest des Parameters außerhalb der SQL-Anweisung. |
Jede Parametereigenschaft wird in einer Doppelzeile der Parameterliste editiert.
In diese Spalte ist der Name des Parameters einzutragen. Anhand dieses Bezeichnung wird der Parameter bei der Bearbeitung der Ausdrücke wiedergefunden.
Da die Parameter mit Bezug auf die SQL-Anweisung gespeichert werden, erhalten sie innerhalb der SQL-Anweisung eine laufende Nummer. Diese Nummer wird automatisch generiert.
Die Beschriftung sollte dem Anwender intuitiv den Zweck der Anweisung verdeutlichen.
Die Vorgabe eines Standardwerts ist dann sinnvoll, wenn die damit verbundene Abfrage häufig mit dem selben Wert ausgeführt werden soll.
Typ
|
Zugehöriges Symbol |
Der Typ beschreibt die Art des Übergabewertes. Über die Auswahlliste können sechs verschiedene Parametertypen gewählt werden.
Text
Dieser Parameter übergibt einen Text in die SQL-Anweisung.
Zahl
Dieser Parameter übergibt eine Zahl in die SQL-Anweisung.
Fest
Dieser Parameter bezieht sich auf die übergeordneten Filtereinstellungen der Datenbank. Es handelt sich hierbei um die aktuelle Gemeinde, den aktuellen Arbeitsbereich, das aktuelle Berechnungsgebiet und die aktuelle Bibliothek. Die Auswahl der Einstellung wird über eine Auswahlliste gewährleistet.
Auswahlliste
Dieser Parameter greift auf die in der Datenbank vorhandenen Auswahllisten zu. So geht's:
-
Nach Wahl dieses Parametertyps öffnet sich ein Eingabefenster, in dem alle Auswahllisten tabellenförmig angeordnet sind.
-
Die Zeile mit der gewünschten Auswahlliste ist zu markieren.
-
Die Auswahlliste wird per Klick auf OK in den Parameter übernommen.
So geht's bei Ausführung der SQL-Anweisung:
-
Die Auswahlliste wird über die zugehörige Taste zu geöffnet. Die Auswahllisteneinträge werden nicht als Kürzel, sondern als Langtexte angezeigt.
-
Dort wird der gewünschte Eintrag gewählt.
-
Intern wird dann das Kürzel an die Abfrage übergeben.
Abfrage
Der gewünschte Parameter kann aus einer Abfrage stammen. So geht's:
1. |
Auswahl des Parametertyps Abfrage. |
2. |
Dadurch öffnet sich automatisch die Dokumentenverwaltung des Configuration Explorers. |
3. |
|
Aus der Liste wird eine Abfrage gewählt und über die gezeigte Funktion übernommen. |
Weitere Details zur Dokumentenverwaltung werden in der generellen Hilfe zum Configuration Explorer beschrieben.
Mehrfachauswahl
Über die Mehrfachauswahl kann die Abfrage auf beliebig gewählte Objekte eines Objekttyps gefiltert werden:
-
Bei der Definition des Parameters wird der Objekttyp aus einer Liste gewählt.
-
Bei der Ausführung der Abfrage können die Objekte des Objekttyps grafisch oder über die kombinierte Verwendung von Kontrollkästchen und Schaltflächen gewählt werden. Die Abfrage wird dann nur auf die gewählten Objekte angewendet.
-
Die Mehrfachauswahl wird in diesem Abschnitt beispielhaft anhand des Objekttyps AbwHaltung erläutert.
Definition des Parameters
Alle für die Mehrfachauswahl in Frage kommenden Objekttypen sind in einem Formular gelistet.
Objekttypen selektieren |
Kopfleiste. |
||||||
|
Gewählter Objekttyp AbwHaltung. |
||||||
|
Schaltflächenleiste. |
Ausführung der Abfrage
Bei Ausführung der Abfrage wird die skizzierte Liste zur Auswahl der gewünschten Haltungen geöffnet.
Objekte selektieren |
Kopfleiste. |
|||||||||
|
Objekttyp. |
|||||||||
|
||||||||||
|
Auswahl-Schaltflächen. |
|||||||||
|
Schaltflächenleiste. |
Schaltflächen
Funktionalität der Schaltflächen:
● |
Alle auswählen |
Es werden alle Objekte, in diesem Beispiel alle Haltungen, für die Abfrage gewählt. |
● |
Keine auswählen |
Alle vorhandenen Häkchen werden zurückgesetzt. Es sind keine Objekte mehr gewählt. |
● |
Alle angeschlossenen |
Falls bereits Haltungen gewählt sind, werden die anschließenden Haltungen ebenfalls markiert. Über die Taste wird sozusagen eine kleine Fließwegverfolgung in beide Richtungen durchgeführt. |
● |
Grafische Selektion |
Über diese Schaltfläche wird automatisch in das geöffnete Modul BaSYS-Plan gewechselt. Nach der grafischen Wahl der Haltungen sind in der Liste automatisch die relevanten Häkchen gesetzt. |
● |
Strang |
Die Haltungen werden anhand der übergeordneten Stränge gewählt. Diese Option kann nur dann verwendet werden, wenn das Kanalnetz mit Strängen geplant wurde. |
● |
OK |
Die Eingabe wird übernommen und das Formular geschlossen. |
● |
Abbrechen |
Das Formular wird ohne Übernahme der Daten geschlossen. |
Art des Parameters
|
Zugehöriges Symbol |
Über eine Auswahlliste kann ein Standardfilter auf folgende Objekte gesetzt werden:
-
Aktuelle Gemeindevariante
-
Aktuelle Gemeinde
-
Aktuelle Projektvariante
-
Aktueller Arbeitsbereich
-
Aktuelle Hydraulikvariante
Sichtbar
|
Zugehöriges Symbol |
Über dieses Kontrollkästchen wird gesteuert, ob der Parameter-Dialog der Abfrage angezeigt werden soll oder nicht.
Eigenschaften
|
Zugehöriges Symbol |
Über das Formular Optionen werden die Eigenschaften der Abfrage festgelegt.
Optionen |
Kopfleiste. |
|||||||||
|
Selektionseigenschaften. |
|||||||||
|
Synchronisation zwischen den Datenbankobjekten und den Geometriedaten. |
|||||||||
DML
|
Zieltabelle einer DML-Abfrage. |
|||||||||
|
Schaltflächenleiste. |
Über die hier eingegebenen Werte wird der Zugriff auf die Zeilen definiert.
DISTINCT
|
Zugehöriges Symbol |
Bei gesetztem Häkchen werden alle redundanten Ergebniszeilen der Datenbankabfrage unterdrückt. Ist das Häkchen nicht gesetzt, werden also alle Ergebniszeilen zurückgegeben.
TOP
|
Zugehöriges Symbol |
Bei gesetztem Häkchen sollen nur n Ergebniszeilen zurückgegeben werden. Die Zahl muss dann in das zugehörige Feld eingegeben werden. Ist das Häkchen nicht gesetzt, werden also alle Ergebniszeilen zurückgegeben.
n =
Über dieses Feld kann die gewünschte maximale Zahl der Ergebniszeilen definiert werden. Dafür muss das Häkchen im Kontrollkästchen TOP gesetzt sein.
Die drei Eingabefelder steuern die Synchronisation zwischen den Datenbankobjekten und den Geometriedaten in den externen XML-Dokumenten.
Beispielsweise sollen die Geometrien auf Grundlage der Leitungsdaten abgefragt werden. Dazu müssen die Tabellenspalten ID, Objekttyp und Geometries für die Abfrage zugewiesen sein. Das Abfrageergebnis und die Handhabung der Geometrien wird in den Hilfeeinträgen Ergebnisse und Abfragebeispiele näher erläutert.
ObjektId-Spalte
|
Zugehöriges Symbol |
An dieser Stelle ist die Spalte mit der eindeutigen Objektkennung, auf die sich die Abfrage beziehen soll, einzutragen.
Objekttyp-Spalte
|
Zugehöriges Symbol |
An dieser Stelle ist die Spalte des abzufragenden Objekttyps einzutragen.
Geometrie-Spalte
|
Zugehöriges Symbol |
An dieser Stelle ist die Spalte der abzufragenden Objektgeometrien einzutragen.
Ausdrücke
|
Zugehöriges Symbol |
Die Ausdrücke dienen in erster Linie der vereinfachten Bearbeitung der Einschränkungen (WHERE-Klausel) in einer SQL-Anweisung.
Ausdruckseditor
Im Ausdruckseditor können hierfür vorgefertigte Parameter oder Tabellen verwendet werden. Zusätzlich verfügt der Ausruckseditor über einen Arbeitsbereich zur freien Texteingabe.
So geht's
Die Ausdrücke erscheinen im Arbeitsbereich <Abfrage/Ansicht> in der Spalte <Kriterien>. Um dort einen Ausdruck einzufügen,
-
Ist der Cursor in die entsprechende Zeile der Spalte <Kriterien> zu setzen.
-
Ist die Schaltfläche <Expression> der Werkzeugleiste anzuklicken.
-
Nach erfolgreicher Eingabe erscheint die Expression in der WHERE-Klausel des Arbeitsbereichs <SQL-Editor>.
Textfenster
Im Textfenster können die Ausdrücke frei eingegeben werden. Für die Eingabe gelten die syntaktischen Vorgaben der SQL-Anweisungen. Die häufig verwendeten Operatoren sind im rechten Bereich als Schaltflächen verfügbar.
Im Textfenster werden einfache Ausdrücke wie is null, aber auch komplexe IF-Anweisungen eingegeben. Per Klick auf <OK> sind die Eingaben:
-
Im Arbeitsbereich <Abfrage/Ansicht> in Spalte <Kriterien> sichtbar.
-
<SQL-Editor> in der SQL-Anweisung sichtbar.
Parameter / Tabellen
Im unteren linken Bereich des Ausdruckseditors befindet sich der Auswahlbereich für vorgefertigte Parameter und eingebundene Tabellen.
Alle für die SQL-Anweisung definierten Parameter und eingebundenen Tabellen werden hier angezeigt und können per Doppelklick gewählt werden. Im hier angeführten Beispiel ist ein Parameter mit der Bezeichnung "Bezeichnung" verwendet worden.
Sollten Sie einen Parameter des Typs "Mehrfachauswahl" in eine SQL-Anweisung einbinden, wird der Parameter über die Funktion "in ()" mit der jeweiligen ID-Spalte verbunden, nicht mit der Spalte "Bezeichnung". In diesem Fall ergibt sich folgende Syntax:
SELECT {AbwLeitung}.{Bezeichnung}, {AbwKnoten}.{Bezeichnung} as Zulauf, {AbwKnoten_1}.{Bezeichnung} as Ablauf
FROM (( {AbwKnoten} AbwKnoten
INNER JOIN {AbwLeitung} AbwLeitung ON {AbwLeitung}.{IdRefAnf -AbwKnoten-} = {AbwKnoten}.{Id})
INNER JOIN {AbwKnoten} AbwKnoten_1 ON {AbwLeitung}.{IdRefEnd -AbwKnoten-} = {AbwKnoten_1}.{Id})
WHERE ({AbwLeitung}.{Id} in ([Bezeichnung] ))
ORDER BY {AbwLeitung}.{Bezeichnung} ASC
Impressum der Dokumentation |
Stand: |
24.02.2014 |
Verantwortlich: |
Jörg Martin |
Copyright: |
Barthauer Software GmbH |
Erreichbarkeit: |
Homepage: www.barthauer.de |