【问题标题】:How to select Duplicate values that is mapped in Junction table in SQL server如何选择在 SQL Server 的联结表中映射的重复值
【发布时间】:2018-08-16 21:59:20
【问题描述】:

我已经创建了 Employee、Department 和 EmpDept 表。

这里的 EmpDept 表是 Junction Table。

EmpDept(Junction Table)

EmpID           DeptID

101         502

103         501

102         504

104         502

105         502

106         505

107         507

108         509

这里,“EmpId”是从“Employee”表中引用的,“EmpId”是主键,“ DeptId没有从“Department”表中引用。

 Employee

EmpID   EmpName     

    101 Shama

    103 Varun   

    102 Joesph

    104 Ram

    105 Ravi

    106 Deva

    107 Mukund

这里,EmpId 是主键

Department

DeptName    DeptID

x       501

        502

J       503

R       504

A       505

D       506

M       507

z       508

C       509

现在,我必须获取 EmpDept 表中存在的重复值,并显示对应的具有相同名称的 EmpName

【问题讨论】:

  • 您的EmpDept 联结表应该有自己的主键和2x 外键:一个用于Employee 表,一个用于Department 表。
  • 联结表的典型用途是维护多对多关系;例如,可以为一个员工分配多个部门,一个部门可以有多个员工。鉴于此,您所说的 EmpDept 中的重复值是什么意思? @VidmantasBlazevicius 是正确的。该表应该有它自己的主键。您能否向我们展示您尝试过的一个或多个查询、您得到的结果以及您期望的结果示例?

标签: sql sql-server join duplicates


【解决方案1】:
declare @DepIDTemp int
set @DepIDTemp=(select EmpDept.DepartmentId
from EmpDept
group by EmpDept.DepartmentId
 having count(EmpDept.DepartmentId)>1) 
 Select DEPARTMENT.DepartmentId, DepartmentName,EMPLOYEE.EmployeeName,EMPLOYEE.EmployeeId from
 DEPARTMENT
 join EmpDept on EmpDept.DEPARTMENTID=DEPARTMENT.DepartmentId
 join EMPLOYEE on EmpDept.EMPLOYEEID=EMPLOYEE.EmployeeId
 where DEPARTMENT.DepartmentId=@DepIDTemp;

这是我的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2015-05-06
    • 2013-05-17
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多