Page Title

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mikeplus:dialog:menue_werkzeuge_sql-befehl

Allgemeiner SQL-Befehl

⯇ Zurück zu Menüs und Werkzeuge Wasserversorgung
⯇ Zurück zu Menüs und Werkzeuge Siedlungsentwässerung

Menüpunkt: Werkzeuge > Allgemeiner SQL-Befehl
Handbuch: MIKE+ Model Manager User Guide, section 2.4.7: Tools Menu

Einleitung

Mit dem Werkzeug "Allgemeiner SQL-Befehl" können Attribute aus der Datenbank abgefragt und bearbeitet werden. Die SQL-Syntax bietet zum Teil andere Möglichkeiten, als die Feldberechnung, beispielsweise können mehrere Tabellen miteinander verknüpft werden. Außerdem lassen sich die Befehle abspeichern und wieder aufrufen, sodass Sie bestimmte Arbeitsabläufe leicht wiederholen können, denn ein SQL-Befehl kann aus mehreren Einzelbefehlen bestehen.

Allgemeine SQL-Befehle können auf alle Tabellen und Featureklassen in der MIKE+ Datenbank zugreifen.

Dialogfeld

Feld Erklärung
Ausführen Führt den angezeigten SQL-Befehl/die angezeigten SQL-Befehle aus. Achtung, ist der Befehl erst einmal ausgeführt, können die Änderungen nicht mehr rückgängig gemacht werden!
Laden Öffnet eine Textdatei mit SQL-Befehlen.
Speichern Speichert den angezeigten SQL-Befehl/die angezeigten SQL-Befehle zur späteren Verwendung in eine Textdatei.

Sie schließen den Editor mit dem kleinen [x] rechts oben.

Grundlegende Beispiele

Formatierung

  • Da es sich bei SQL um eine Art Programmiersprache handelt, müssen Sie bei Dezimalzahlen immer den DezimalPUNKT verwenden.
  • Zeilenumbrüche, mehrere aufeinander folgende Leerzeichen oder die Unterscheidung zwischen Klein- und Großschreibung haben keine Auswirkung auf SQL-Befehle, sie dienen lediglich der besseren Lesbarkeit.

Operatoren für Zahlen

+  Addition
-  Subtraktion, Negation
*  Multiplikation
/  Division

Wurzel – SQRT

UPDATE msm_Catchment
SET ModelBLength = SQRT(Area)

Potenz – POWER

POWER( <basis>, <exponent> )

UPDATE msm_Catchment
SET Area = POWER (ModelBLength,2)

Text kürzen – TRIM

TRIM( <text>, <zeichen> )

Aus dem <text> soll <zeichen> entfernt werden. Es kann sich um ein einzelnes oder um mehrere Zeichen handeln. Wenn der Parameter <zeichen>fehlt, wird nach führenden bzw. abschließenden Leerzeichen gesucht.

Sie wollen z. B.: das "J_" aus dem Namen entfernen. Mit dem Befehl TRIM können Sie die Enden einer Zeichenkette kürzen.

UPDATE mw_pipe SET MUID = TRIM (MUID, "J_")

Werte aktualisieren – UPDATE

Alle Zeilen der Tabelle Rohre (mw_pipe) werden aktualisiert, indem die Rauigkeit (rcoeff) mit 1,15 multipliziert wird:

UPDATE mw_pipe SET rcoeff = rcoeff * 1.15;

Bedingung – WHERE

In den Zeilen der Tabelle Schächte (msm_node), in denen der Durchmesser (diameter) 0,99 beträgt, wird der Durchmesser auf 1,00 gesetzt:

UPDATE msm_node SET diameter = 1.0 WHERE diameter = 0.99;

Leere Einträge, beispielsweise im Feld ms_Catchment.Area, werden mit WHERE ms_Catchment.Area IS NULL oder WHERE ms_Catchment.Area IS NOT NULL abgefragt.

Tabellenverknüpfung

Die Tabellenverknüpfung bezieht eine zusätzliche Tabellen mit ein. Im folgenden Beispiel werden Informationen aus der Haltungstabelle msm_Link in die Knotentabelle msm_Node geschrieben.

Konktret wird CriticalLevel von msm_Node mit der Summe aus Invertlevel (Schachtsohle) + Diameter (Profildurchmesser) der abgehenden Haltung aus msm_Link befüllt:

UPDATE msm_Node
SET CriticalLevel = InvertLevel + (SELECT msm_Link.Diameter FROM msm_Link WHERE msm_Link.FromNodeID = msm_Node.MUID)
WHERE EXISTS (SELECT * FROM msm_Link WHERE msm_Link.FromNodeID = msm_Node.MUID)

Quelle: Stackoverflow: Update table values from another table with the same user name

Beachten Sie auch die unten stehenden Weiteren Anwendungsbeispiele!

Mehrere Befehle ausführen

Mehrere SQL-Befehle hintereinander müssen durch Strichpunkte ; getrennt sein. Die Ergebnisse eines Befehls werden sofort gespeichert, das heißt ein zweiter Befehl kann bereits auf die Ergebnisse des ersten Befehls zugreifen.

Die Leitung "Schieber1" wird geschlossen und die Leitung "Schieber2" wird geöffnet:

UPDATE mw_Pipe SET StatusNo = 1 WHERE MUID = 'Schieber1';
UPDATE mw_Pipe SET StatusNo = 0 WHERE MUID = 'Schieber2';

Elemente im Lageplan auswählen

Eine Auswahl mit dem SQL-Befehl SELECT ist nicht möglich.

Weitere Anwendungsbeispiele

Tabellenverknüpfung – Attribute zwischen Tabellen übertragen

(a) Der folgende SQL-Befehl befüllt die Sohlhöhe von Knoten, sofern sie leer ist, basierend auf der Rohrsohle am Anfang der Haltung:

UPDATE msm_Node
SET InvertLevel = (SELECT msm_Link.UpLevel FROM msm_Link WHERE msm_Link.FromNodeID = msm_Node.MUID)
WHERE EXISTS (SELECT * FROM msm_Link WHERE msm_Link.FromNodeID = msm_Node.MUID) AND msm_Node.InvertLevel IS NULL

(b) Der folgende SQL Befehl schreibt in die Description der msm_Link Tabelle den Knotentyp (TypeNo) des Nach-Knotens (ToNodeID); Übernommen aus der msm_Node Tabelle. Anschließend können Sie beispielsweise Haltungen auswählen die in einem bestimmten Knotentyp enden.

UPDATE msm_Link
SET Description = (SELECT msm_Node.TypeNo FROM msm_Node WHERE msm_Node.MUID = msm_Link.ToNodeID)

Falls je Eintrag in der ersten Tabelle mehrere Einträge in der zweiten Tabelle existieren, es sich also um eine 1:n-Verbindung handelt, ist die Übertragung nicht mehr eindeutig.

(c) Der folgende SQL Befehl schreibt in die DataSource der msm_Catchment Tabelle die Knoten ID (MUID) der Einzugsgebietsverknüpfung (NodeID); Übernommen aus der msm_CatchCon Tabelle.

UPDATE msm_Catchment 
SET DataSource = (SELECT msm_CatchCon.NodeID FROM msm_CatchCon WHERE msm_CatchCon.CatchID = msm_Catchment.MUID)

In diesem Fall haben gewisse Einzugsgebiete mehrere Verknüpfungen zu Knoten. In diesem Fall wird der erste Eintrag aus der Quelltabelle msm_CatchCon verwendet:

In die Zieltabelle msm_Catchment wird der erste Eintrag 'Knoten4' übernommen:

mikeplus/dialog/menue_werkzeuge_sql-befehl.txt · Zuletzt geändert: 2022/10/07 16:30 von thomas