データを更新するための SQL

InfoWorks WS Pro には、SQL 式を使用してネットワーク データを変更できるようにする SQL キーワード SETUPDATE が含まれています。

キーワードの詳細については、「SQL 構文」を参照してください。

InfoWorks WS Pro での SQL の使用例の詳細については、「SQL の例」のトピックを参照してください。

現在のオブジェクト タイプを更新する

SET キーワードは単独で、または WHERE サブ句と組み合わせて使用​​して、[SQL]ダイアログの [オブジェクト タイプ] フィールドで選択した現在のオブジェクト タイプを更新できます。

構文は、次のとおりです。

SET キーワードを使用する

SET 
  <assignment>

例 1

SET 
  user_text_1 = "text"

([SQL]ダイアログの [オブジェクト タイプ] フィールドで)選択したオブジェクト タイプのすべてのオブジェクトの user_text_1 フィールドをテキストに設定します。

例 2

同じステートメント内の複数の割り当ては、カンマで区切ります。次に例を示します。

SET 
  user_text_1 = "text", 
  user_number_1 = x

選択したオブジェクト タイプのすべてのオブジェクトの user_text_1 フィールドをテキストに、user_number_1 フィールドを x フィールドの値に設定します。

SETWHERE を使用する

SET 
  <assignment> 
 WHERE <conditional expression>

例 1

SET 
  user_number_1 = 1 
 WHERE x > 100000

x 座標が 100000 より大きい、選択したオブジェクト タイプのすべてのオブジェクトに対して、user_number_1 フィールドを 1 に設定します

例 2

同じステートメント内の複数の割り当ては、カンマで区切ります。次に例を示します。

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

選択したオブジェクト タイプのすべてのオブジェクトのうち、x 座標が 100000 より大きいものについて、フィールド user_number_1 を 1 に、user_number_2 を 2 に設定します。

例 3

複数のステートメントは、セミコロンで区切ります。次に例を示します。

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

SET 
  user_number_3 = 3; 

x 座標が 100000 より大きい、選択したオブジェクト タイプのすべてのオブジェクトに対して、user_number_1 を 1 に、user_number_2 を 2 に設定し、選択したオブジェクト タイプのすべてのオブジェクトに対して、user _number 3 を 3 に設定します。

配列内の値を更新する

オブジェクト内の配列の値を更新するには:

SET 
  <array name.array fieldname> = <expression>
注: 配列での SQL クエリーの使用方法の詳細については、「SQL と配列データ」を参照してください。

例 1

SQL query context:
  • オブジェクト タイプ:
SET 
  diameter = 300 
 WHERE diameter_flag = 'CH'; 

SET 
  length = 10 
 WHERE length < 10

最初のパーツでは、管径のデータ フラグが "CH" に設定されているすべてのパイプについて、直径を 300 に設定します。2 番目のパーツでは、長さが 10 m 未満のすべての管について、最小長さを 10 m に設定します。

例 2

SQL query context:
  • オブジェクト タイプ: ノード
  • [空間] 検索タイプ: 交差
  • [空間]レイヤー タイプ: GIS レイヤー
  • [空間] レイヤー: [SHP]道路
SET 
  user_text_5 = gislayer.AREA

これにより、GIS レイヤー "道路" 内の GIS ポリゴン内にあるノードの user_text_5 フィールドが、GIS ポリゴンの "AREA" フィールドの値に設定されます。

重要: この例では、SQL 内の空間検索機能、特に[SQL]ダイアログ内で空間検索オプションを定義する際の暗黙的検索機能を利用します。SQL クエリーに背景のネットワーク レイヤーと GIS レイヤーを含める方法の詳細については、「SQL と空間検索」を参照してください。

異なるオブジェクト タイプを更新する

UPDATE キーワードは、SET キーワードおよび WHERE キーワードと組み合わせて使用し、1 つ以上のタイプのオブジェクトを更新します。[SQL]ダイアログの [オブジェクト タイプ] リストで選択したタイプとは限りません。

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

上記の「現在のオブジェクト タイプを更新する」セクションで説明されているように、同じステートメントの複数の割り当てはカンマで区切り、複数のステートメントはセミコロンで区切ります。

例 1

UPDATE [All Links] SET 
  user_text_1 = "text"

すべてのリンク オブジェクトの user_text_1 フィールドをテキストに設定します。

例 2

UPDATE node SET 
  user_number_1 = 1 
 WHERE x > 100000

x 座標が 100000 より大きいノード オブジェクトに対して、user_number_1 フィールドを 1 に設定します。