Accéder au contenu principal

Utiliser la clause UNION ALL

Dernière mise à jour : 26/08/2026

La clause UNION ALL vous permet de construire un tableau se basant sur les résultats de plusieurs blocs de requêtes ou de sous-requêtes.

Dans Talend Data Mapper avec la mise à jour mensuelle 8.0.1-R2024-05 ou une plus récente, vous pouvez également utiliser UNION ALL ENTRY pour créer un tableau d'enregistrements avec des paires clé/valeur provenant de plusieurs sous-requêtes.

Une requête avec une clause UNION ALL pour combiner les résultats de sous-requêtes dans un tableau doit suivre le format suivant :
SELECT [
  <sub-query>
   UNION ALL
  <sub-query>
]
Cette syntaxe est utilisée dans l'exemple suivant : Fusionne deux tableaux en se basant sur des conditions.
Une requête avec une clause UNION ALL ENTRY pour combiner les résultats de sous-requêtes dans un tableau d'enregistrements doit suivre le format suivant :
SELECT [
  { key = '<name_of_key>', value = <value_expression> }
  UNION ALL ENTRY
  { key = '<name_of_key>', value = <value_expression> }
]
Par exemple :
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) }
]
Une requête avec une clause UNION ALL pour combiner les résultats de blocs de requêtes dans un tableau doit suivre le format suivant :
<query_block>
UNION ALL
<query_block>
Vous pouvez utiliser des conditions dans une clause UNION ALL. Par exemple :
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 } )
]

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.