User_Details USER_ID、ステータス(1/0)、名前の、は、JOIN - など
地域、三つの領域を持つ:US、ヨーロッパ、アジア、それぞれのID#1,2、および3
がUSER_ID、REGION_ID、およびステータス私がしようとしています(1/0)
が含まれている様々な領域へのアクセス権を与えるREGION_IDとUSER_IDをマップをUser_Region_Mappingとクエリを作成します。すべての単一領域をACTIVE(別名ステータス= 1)ユーザに割り当て、User_Region_Mappingテーブルに既に存在する冗長データポイントを避けます(既存のデータはそこに残します)。
したがって、すべてのアクティブ・ユーザーIDに3つの行があり、ステータスIDは1,2,3です。ステータスはnullにできないため、ステータスIDはすべて1に設定されます。助けてください
CREATE TABLE "MYDB"."USER_REGION_MAPPING"
( "USER_ID" NUMBER NOT NULL ENABLE,
"REGION_ID" NUMBER NOT NULL ENABLE,
"STATUS" NUMBER NOT NULL ENABLE,
"CREATED_BY" VARCHAR2(50),
"MODIFIED_BY" VARCHAR2(50),
}
CREATE TABLE "MYDB"."USER_DETAILS"
( "ID" NUMBER,
"LOGIN_ID" VARCHAR2(100),
"EMAIL_ID" VARCHAR2(150) NOT NULL ENABLE,
"REGION_CODE" NUMBER,
"FIRST_NAME" VARCHAR2(50),
"MIDDLE_NAME" VARCHAR2(50),
"LAST_NAME" VARCHAR2(50),
"IS_PRIMARY" NUMBER,
"STATUS" NUMBER NOT NULL ENABLE,
PRIMARY KEY ("ID")
}
CREATE TABLE "MYDB"."REGIONS"
( "ID" NUMBER,
"CODE" VARCHAR2(20 CHAR),
"NAME" VARCHAR2(20 CHAR),
"IS_DEFAULT" NUMBER,
"STATUS" NUMBER,
"CREATED_BY" VARCHAR2(50),
"MODIFIED_BY" VARCHAR2(50),
"CREATED_DATE" DATE,
"MODIFIED_DATE" DATE,
PRIMARY KEY ("ID")
}
!!:私は、JOIN CROSSの組み合わせを使用する必要がありますし、LEFTを知って はTABLESため
スクリプトを登録しよう
insert into User_Region_mapping
(fieldlist)
select (fieldlist)
from USER_DETAILS, REGIONS
where USER_DETAILS.STATUS = 1
and REGIONS.STATUS = 1
and not exists (select *
from USER_REGION_MAPPING
where USER_DETAILS.id = USER_REGION_MAPPING.USER_ID
and USER_DETAILS.id
= USER_REGION_MAPPING.REGION_ID= REGIONS.ID)
構文は完璧ではないかもしれないが、それはあなたのアイデアを与える:
ユーザステータス= 1はどうですか?すべてのリージョンユーザマッピングステータスを1に設定しますか? – user7470849
これを外側のwhere節に追加します。 – MikeS