Accéder au contenu principal Passer au contenu complémentaire

Fusionne deux tableaux en se basant sur des conditions

Utilisez le mot-clé UNION ALL avec des conditions afin de fusionner deux tableaux en un et d'itérer sur son contenu.

Pourquoi et quand exécuter cette tâche

Cet exemple utilise le JSON d'entrée ci-dessous. Il contient un élément customers avec deux tableaux : Platinum et Gold. Chaque tableau contient les trois mêmes éléments : region, cid et name. L'objectif est de créer un tableau unique.
{
	"customers": {
		"Platinum": [
			{
				"region": "West Midlands",
				"cid": 12,
				"name": "E. W. Gilbert"
			},
			{
				"region": "Greater Manchester",
				"cid": 75,
				"name": "John Doe"
			}
		],
		"Gold": [
			{
				"region": "West Midlands",
				"cid": 13,
				"name": "G. K. Peatling"
			},
			{
				"region": "Greater Manchester",
				"cid": 76,
				"name": "Tom Cruise"
			}
		]
	}
}

Procédure

  1. Créez les clauses FROM et SELECT pour créer le nouveau tableau customers.
    FROM customers
    SELECT {
       customers =
          []
    }
  2. Dans ce nouveau tableau, créez une première sous-requête pour itérer sur le tableau d'entrée Platinum.

    Vous pouvez utiliser une expression conditionnelle avec le mot-clé IF afin de vérifier que le tableau Platinum contient une valeur.

    FROM customers
    SELECT {
       customers =
          [
             IF (hasValue(Platinum)) (
                FROM Platinum
                SELECT {
                   region = region,
                   cid = cid,
                   name = name,
                   ranking = "Platinum"
                }
             )
          ]
    }
  3. Créez une autre sous-requête sur le tableau Gold et utilisez le mot-clé UNION ALL pour fusionner les deux tableaux dans le nouveau tableau customers.

    Après le mot-clé UNION ALL, vous pouvez inclure une expression conditionnelle afin de vérifier que le tableau Gold contient une valeur.

    FROM customers
    SELECT {
       customers =
          [
             IF (hasValue(Platinum)) (
                FROM Platinum
                SELECT {
                   region = region,
                   cid = cid,
                   name = name,
                   ranking = "Platinum"
                }
             )
             UNION ALL
             IF (hasValue(Gold)) (
                FROM Gold
                SELECT {
                   region = region,
                   cid = cid,
                   name = name,
                   ranking = "Gold"
                }
             )
          ]
    }

Résultats

Cette requête retourne le résultat suivant :
[
	{
		"customers": [
			{
				"region": "West Midlands",
				"cid": 12,
				"name": "E. W. Gilbert",
				"ranking": "Platinum"
			},
			{
				"region": "Greater Manchester",
				"cid": 75,
				"name": "John Doe",
				"ranking": "Platinum"
			},
			{
				"region": "West Midlands",
				"cid": 13,
				"name": "G. K. Peatling",
				"ranking": "Gold"
			},
			{
				"region": "Greater Manchester",
				"cid": 76,
				"name": "Tom Cruise",
				"ranking": "Gold"
			}
		]
	}
]

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 – dites-nous comment nous améliorer !