-1
postgresクエリを作成して、beta_plan_idのクラスタIDを取得し、後でいくつかの操作を行う必要があります。下の表の1つのbeta_plan_idに対して、多数の商品IDがありますcluster_id。これはどのように扱われますか?postgresコードのforループで提案が必要
BETA_PLAN_ID MERCH_LEVEL1_ID BETA_PLAN_MERCH_LVL1_CLSTR_ID NO_OF_STORES
1 1 12 5,6,7
1 1 13 9,10
1 1 14 2,3,4
2 2 15 13,12
SELECT BETA_PLAN_MERCH_LVL1_CLSTR_ID INTO i_clstr_id
FROM beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR
WHERE BETA_PLAN_ID = in_beta_plan_id;
問題はBETA_PLAN_MERCH_LVL1_CLSTR_IDは、シリアル型で一意(beta_plan_id、merch_id、CLUSTER_ID)コンボのために生成するので、多くの結果が返されるです。代わりに、最初のSELECT
文の
SELECT BETA_PLAN_MERCH_LVL1_CLSTR_ID
INTO i_clstr_id
FROM beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR
WHERE BETA_PLAN_ID = in_beta_plan_id;
INSERT INTO beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR
(
BETA_PLAN_ID,
MERCH_LEVEL1_ID,
CLUSTER_ID,
CLUSTER_NAME,
NO_OF_STORES,
NO_OF_FOOTAGE_VARIATION,
CREATED_USER,
CREATED_TS
)
SELECT
out_plan_id,
merch_lvl1_clstr.MERCH_LEVEL1_ID,
merch_lvl1_clstr.CLUSTER_ID,
merch_lvl1_clstr.CLUSTER_NAME,
merch_lvl1_clstr.NO_OF_STORES,
merch_lvl1_clstr.NO_OF_FOOTAGE_VARIATION
in_user_id,
now()
FROM beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR merch_lvl1_clstr
INNER JOIN beta_plan.BETA_PLAN_MERCH_COPY_PLAN merch_copy
ON merch_copy.MERCH_ID = merch_lvl1_clstr.MERCH_LEVEL1_ID
AND merch_lvl1_clstr.BETA_PLAN_ID = in_beta_plan_id
RETURNING BETA_PLAN_MERCH_LVL1_CLSTR_ID INTO o_clstr_id;
INSERT INTO beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR_STR
(
BETA_PLAN_MERCH_LVL1_CLSTR_ID,
STORE_ID,
CREATED_USER,
CREATED_TS
)
SELECT
o_clstr_id,
STORE_ID,
in_user_id,
now()
FROM beta_plan.BETA_PLAN_MERCH_LVL1_CLSTR_STR
WHERE BETA_PLAN_MERCH_LVL1_CLSTR_ID = i_clstr_id;
与えられた 'BETA_PLAN_ID'に対して返される' BETA_PLAN_MERCH_LVL1_CLSTR_ID'はどれですか? –
私は、cluster_idの12,13,14を持っているbeta_plan_id 1の行が必要です。これらのidと対応するstore_idをclstr_strテーブルに挿入する必要があります。基本的には、レコードを介してselect文ループが必要で、clstr_strテーブルに挿入する必要があります。最後に。 –
データベースクライアント上のPostgreSQL関数またはプログラミングランムグァージュでは? –