SQL zum Aktualisieren von Daten

InfoWorks WS Pro enthält die SQL-Schlüsselwörter SET und UPDATE, mit denen Netzdaten mithilfe eines SQL-Ausdrucks geändert werden können.

Weitere Informationen zu Schlüsselwörtern finden Sie unter SQL-Syntax.

Weitere Beispiele zur Verwendung von SQL in InfoWorks WS Pro finden Sie in den Themen zu SQL-Beispielen.

Aktualisieren des aktuellen Objekttyps

Das Schlüsselwort SET kann allein oder in Verbindung mit einer WHERE-Unterklausel verwendet werden, um den aktuellen Objekttyp zu aktualisieren, der im Feld Objekttyp des Dialogfelds SQL ausgewählt ist.

Die Syntax lautet wie folgt:

Verwendung des Schlüsselworts SET

SET 
  <assignment>

Beispiel 1

SET 
  user_text_1 = "text"

Legt für alle Objekte des ausgewählten Objekttyps (ausgewählt im Feld Objekttyp des Dialogfelds SQL) das Feld user_text_1 auf text fest.

Beispiel 2

Trennen Sie mehrere Zuweisungen in derselben Anweisung durch Kommas. Beispiel:

SET 
  user_text_1 = "text", 
  user_number_1 = x

Legt für alle Objekte des ausgewählten Objekttyps das Feld user_text_1 auf den Wert text und das Feld user_number_1 auf den Wert im Feld x fest.

Verwenden von SET und WHERE

SET 
  <assignment> 
 WHERE <conditional expression>

Beispiel 1

SET 
  user_number_1 = 1 
 WHERE x > 100000

Setzt das Feld user_number_1 für alle Objekte des ausgewählten Objekttyps, deren x-Koordinate größer als 100000 ist, auf 1.

Beispiel 2

Trennen Sie mehrere Zuweisungen in derselben Anweisung durch Kommas. Beispiel:

SET 
  user_number_1 = 1, 
  user_number_2 = 2 
 WHERE x > 100000

Legt für alle Objekte des ausgewählten Objekttyps, deren x-Koordinate größer als 100000 ist, das Feld user_number_1 auf 1 und das Feld user_number_2 auf 2 fest.

Beispiel 3

Trennen Sie mehrere Anweisungen durch Semikolons voneinander. Beispiel:

SET 
  user_number_1 = 1, 
  user_number_2 = 2 
 WHERE x > 100000; 

SET 
  user_number_3 = 3; 

Legt für alle Objekte des ausgewählten Objekttyps, deren x-Koordinate größer als 100000 ist, das Feld user_number_1 auf 1 und das Feld user_number_2 auf 2 fest und setzt das Feld user_number_3 wird für alle Objekte des ausgewählten Objekttyps auf 3.

Aktualisieren von Werten innerhalb einer Anordnung

So aktualisieren Sie Werte in einer Anordnung innerhalb eines Objekts

SET 
  <array name.array fieldname> = <expression>
Anmerkung: Weitere Informationen zur Verwendung von SQL-Abfragen mit Anordnungen finden Sie unter SQL- und Anordnungsdaten.

Beispiel 1

SQL query context:
  • Objekttyp: Rohr
SET 
  diameter = 300 
 WHERE diameter_flag = 'CH'; 

SET 
  length = 10 
 WHERE length < 10

Im ersten Teil wird ein Durchmesser von 300 für alle Rohre festgelegt, bei denen die Datenkennzeichnung für den Rohrdurchmesser auf CH gesetzt ist. Im zweiten Teil wird eine Mindestlänge von 10 m für alle Rohre mit einer Länge unter 10 m festgelegt.

Beispiel 2

SQL query context:
  • Objekttyp: Knoten
  • [Raumbezogener] Suchtyp: Kreuzen
  • [Raumbezogener] Layertyp: GIS-Layer
  • [Raumbezogener] Layer: [SHP] Straßen
SET 
  user_text_5 = gislayer.AREA

Dadurch wird das Feld user_text_5 für alle Knoten in einem GIS-Polygon im GIS-Layer Straßen auf den Wert im Feld FLÄCHE des GIS-Polygons gesetzt.

Wichtig: In diesem Beispiel wird beim Definieren von raumbezogenen Suchoptionen im Dialogfeld SQL die raumbezogene Suchfunktion in SQL verwendet, insbesondere die implizite Suchfunktion. Weitere Informationen zum Einschließen von Netz- und GIS-Hintergrundlayern in SQL-Abfragen finden Sie unter SQL und raumbezogene Suche.

Aktualisieren eines anderen Objekttyps

Das Schlüsselwort UPDATE wird in Verbindung mit den Schlüsselwörtern SET und WHERE verwendet, um Objekte eines oder mehrerer Typen zu aktualisieren. Dies ist nicht unbedingt der in der Liste Objekttypen im Dialogfeld SQL ausgewählte Typ.

UPDATE <object type> SET 
  <assignment>
UPDATE <object type> SET 
  <assignment> 
 WHERE <conditional expression>

Trennen Sie mehrere Zuweisungen in derselben Anweisung durch Kommas und mehrere Anweisungen durch Semikolons, wie im Abschnitt Aktualisieren des aktuellen Objekttyps oben beschrieben.

Beispiel 1

UPDATE [All Links] SET 
  user_text_1 = "text"

Legt das Feld user_text_1 für alle Verbindungsobjekte auf text fest.

Beispiel 2

UPDATE node SET 
  user_number_1 = 1 
 WHERE x > 100000

Legt das Feld user_number_1 für Knotenobjekte, deren x-Koordinate größer als 100000 ist, auf 1 fest.