我正在使用主键复制表1中的多个记录,主键具有表2(外键)的引用
考虑使用列{eid(主键),ename,dept,dept_code)的表employee
。
表2 employee_address
包含列(eaid(主键),eid(外键),城市,国家/地区)
现在任务是表1(即员工)可能有多个具有不同部门代码的值。
假设dept_code
可能是1或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
员工地址表
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
现在问题是我必须复制employee表中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**
现在我必须得到这样的输出。
此任务的条件是,
我尝试了各种各样的想法没有成功。
帮助我解决这个问题。
答案 0 :(得分:0)
如果我理解你的问题,这两个查询就可以了。他们使用tSql窗口函数,如果你不使用Sql Server,那么你需要找到相应的。
编辑回答OP的评论 -
如果要创建新表:
<div class="col-md-12">
<section id="amenities-part" class="col-md-6">
<div>
<h2>Amenities</h2>
<span>Lift</span> <br><span>AC</span>
</div>
</section>
<section id="services-part" class="col-md-6">
<div>
<h2>Services</h2>
<span>Cooking</span> <br><span>Cooking</span>
</div>
</section>
<section id="safety-part" class="col-md-6">
<div>
<h2>Safety</h2>
<span>First Aid Kit</span> <br><span>Fire Extinguisher </span>
</div>
</section>
<section id="local-service-part" class="col-md-6">
<div>
<h2>Local Area Service</h2>
<span>jfh</span> <br><span>jfh</span>
</div>
</section>
<section id="handler-detail-part" class="col-md-6">
<div>
<h2>Handler Detail</h2>
<img class="img-responsive" alt="Handler-profile-picture" width="75px" src="https://www.primomedico.com/wp-content/uploads/2015/09/Prof-Dr-Schmidli-Juerg-Spezialist-Gefaesschirurgie-Bern-Portrait_klein.jpg">
<p>Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper.</p>
</div>
</section>
</div>
如果您只想插入新的&#39;记录到原始表中:
Select * Into EmployeeNew From (
Select *
From Employee E
Union All
Select Row_Number() Over (Order By eid) + (Select Max(eid) From Employee),
ename, dept, 5 dept_code
From Employee
Where Dept_Code = 1) A
Select * Into EmployeeAddressNew From (
Select A.*
From Employee E
Join EmployeeAddress A On A.eid = E.eid
Union All
Select A.eaid + (Select Max(eaid) From EmployeeAddress),
Dense_Rank() Over (Order By E.eid) + (Select Max(eid) From Employee),
City, Country
From Employee E
Join EmployeeAddress A On A.eid = E.eid
Where E.Dept_Code = 1) A