⯇ 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
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.
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.
+ Addition - Subtraktion, Negation * Multiplikation / Division
UPDATE msm_Catchment SET ModelBLength = SQRT(Area)
POWER( <basis>, <exponent> )
UPDATE msm_Catchment SET Area = POWER (ModelBLength,2)
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_")
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;
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.
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 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';
Eine Auswahl mit dem SQL-Befehl SELECT
ist nicht möglich.
(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: