メイン コンテンツをスキップする 補完的コンテンツへスキップ

条件に基づいて2つの配列をマージ

UNION ALLキーワードを条件付きで使用して2つの配列を1つに結合し、その内容を反復処理します。

このタスクについて

この例では、以下のJSON入力を使います。ここには、PlatinumGoldという2つの配列を持つcustomersエレメントが含まれています。配列にはそれぞれ、3つの同じエレメント(regioncidname)が含まれています。目標は1つの配列を作成することです。
{
	"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"
			}
		]
	}
}

手順

  1. FROM句とSELECT句を作成して、新しいcustomers配列を作成します。
    FROM customers
    SELECT {
       customers =
          []
    }
  2. この新しい配列で、入力Platinum配列を反復処理する最初のサブクエリーを作成します。

    IFキーワードを伴う条件式を使えば、Platinum配列に値があるかどうかをチェックできます。

    FROM customers
    SELECT {
       customers =
          [
             IF (hasValue(Platinum)) (
                FROM Platinum
                SELECT {
                   region = region,
                   cid = cid,
                   name = name,
                   ranking = "Platinum"
                }
             )
          ]
    }
  3. Gold配列を反復処理する2番目のサブクエリーを作成し、UNION ALLキーワードを使って両方の配列を新しいcustomers配列に結合させます。

    UNION ALLキーワードの後に、Gold配列に値があるかどうかをチェックする条件式を含めることもできます。

    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"
                }
             )
          ]
    }

タスクの結果

このクエリーは次の結果を返します:
[
	{
		"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"
			}
		]
	}
]

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。