User_Details
地区,包含三个地区:美国,欧洲,亚洲,各自ID#1,2和3。
使用Region_ID映射User_ID的User_Region_Mapping 可以访问包含User_ID,Region_ID和Status(1/0)的不同区域
我正在尝试创建一个查询,将每个区域添加到每个单独的ACTIVE(aka status = 1)用户,避免User_Region_Mapping表中已存在的冗余数据点(将现有数据留在那里)。
因此,每个活动用户ID都有三行,区域ID为1,2,3,其中所有状态的status都设置为1,因为status不能为null。 我知道我必须使用CROSS JOIN和LEFT JOIN的组合
表格的脚本:
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")
}
请帮助!!
答案 0 :(得分:0)
你可以这样做:
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)
语法可能不完美,但它会给你一个想法。