【发布时间】:2016-05-05 21:00:36
【问题描述】:
我正在使用主键复制表 1 中的多条记录,该主键与表 2(外键)有引用
考虑表 employee 与列 (eid(primary key),ename,dept,dept_code)。
表 2 employee_address 包含列(eaid(主键)、eid(外键)、城市、国家/地区)
现在的任务是表 1(即员工)可能有多个具有不同部门代码的值。
假设dept_code可能是1或2,比如某某。
现在两个表都有一些数据看起来像这样
EMPLOYEE表
Eid(pk) ename dept Dept_code
100 Sss Cse 1
101 Aaa Cse 1
102 Bbb Cse 1
103 Ccc Eee 2
104 ddd it 3
员工地址表
Eaid (pk) Eid (fk) city country
1 100 NY Us
2 100 NY Us
3 100 NY Us
4 101 CALIF Us
5 102 DC Us
6 102 DC Us
7 103 NJ Us
现在的问题是我必须复制员工表中的所有记录,其中 dept_code=1 并且重复记录 dept_code 应该是 = 5。
表 2 中引用员工地址表的外键(即当前文档中的 100,101,102)必须重复表 2 中存在的外键值的次数。
我必须得到这样的输出
员工表
Eid(pk) ename dept Dept_code
100 Sss Cse 1
101 Aaa Cse 1
102 Bbb Cse 1
103 Ccc Eee 2
104 ddd it 3
**105 sss cse 5
106 aaa cse 5
107 bbb cse 5**
员工地址表
Eaid (pk) Eid (fk) city country
1 100 NY Us
2 100 NY Us
3 100 NY Us
4 101 CALIF Us
5 102 DC Us
6 102 DC Us
7 103 NJ Us
**8 105 NY Us
9 105 NY Us
10 105 Ny Us
11 106 CALIF Us
12 107 DC Us
13 107 DC Us**
现在我必须得到这样的输出。
这个任务的条件是,
- 没有for循环
- 应尽可能少地访问数据库
- 可以使用 java 或 sql 查询本身。
我尝试了各种想法,但都没有成功。
帮我解决这个问题。
【问题讨论】:
-
这与 java 有什么关系?
-
I tried with various ideas nothing worked out请展示或解释您的尝试。 -
我将从 select into 和一个子查询开始。唯一棘手的部分是使用正确的主键。喜欢:
select (select max(eid) + 1 from employee ), ename, dept, 5 into employee from (select * from employee where dept_code = 1)
标签: sql oracle arraylist duplicates