# UNION ALL句を使う

UNION ALL句を使用すると、複数のクエリーブロックやサブクエリーの結果に基づいて1つの配列をビルドできます。

Talend Data Mapper (8.0.1-R2024-05以降のマンスリーアップデートを伴う)では、UNION ALL ENTRYを使い、複数のサブクエリーからキー/値ペアを持つレコードの配列を作成することもできます。

サブクエリーの結果を配列にまとめるUNION ALL句を持つクエリーは、次のようにフォーマット化されます:

```
SELECT [
  <sub-query>
   UNION ALL
  <sub-query>
]
```

この例で使用されている構文は次のとおりです: [条件に基づいて2つの配列をマージ](https://help.qlik.com/talend/ja-JP/data-shaping-language-reference-guide/8.0/merging-two-arrays-based-on-conditions "UNION ALLキーワードを条件付きで使用して2つの配列を1つに結合し、その内容を反復処理します。")。

サブクエリーの結果をレコードの配列にまとめるUNION ALL ENTRY句を持つクエリーは、次のようにフォーマット化されます:

```
SELECT [
  { key = '<name_of_key>', value = <value_expression> }
  UNION ALL ENTRY
  { key = '<name_of_key>', value = <value_expression> }
]
```

例:

```
FROM customer
SELECT [
  { key = 'id', value = custid }
  UNION ALL ENTRY
  { key = 'name', value = name }
  UNION ALL ENTRY
  { key = 'address', value = concatWith(', ', address.street, address.city) }
]
```

クエリーブロックの結果を配列にまとめるUNION ALL句を持つクエリーは、次のようにフォーマット化されます:

```
<query_block>
UNION ALL
<query_block>
```

UNION ALL句では条件を使用できます。例:

```
FROM order
LET $items_size = size(items)
WHERE $items_size > 2
SELECT [
  IF ($items_size > 2) ( FROM items INDEX $i SELECT ENTRY { key = concat('itemno_', $i + 1), value = itemno } )
  UNION ALL ENTRY
  IF ($items_size > 2) ( FROM items INDEX $j SELECT ENTRY { key = concat('qty_', $j + 1), value = qty } )
  UNION ALL ENTRY
  IF ($items_size > 2) ( FROM items INDEX $k SELECT ENTRY { key = concat('price_', $k + 1), value = price } )
]
```