我一直在研究如何使用多个连接(或子查询)将实体属性映射到另一个表中的列,但我真的很难找到从哪里开始。
我创建了一个SQL小提琴,演示了我想要做的事情。 User
实体应包含名为Employee
的属性,该属性从employee表
SET @uid = 2;
SELECT Employee.Name
FROM Employee
JOIN Company ON Employee.CompanyId = Company.Id
WHERE Company.CompanyNo = (SELECT UserEmployee.CompanyNo
FROM UserEmployee
JOIN User ON UserEmployee.UserId = User.Id
AND User.Id = @uid)
AND Employee.EmployeeNo = (SELECT UserEmployee.EmployeeNo
FROM UserEmployee
JOIN User ON UserEmployee.UserId = User.Id
AND User.Id = @uid)
http://sqlfiddle.com/#!9/cbac3/2
基本上,User
记录使用关系表(Employee
)与UserEmployee
相关联,但这是1-0的关系。
我们没有使用ID作为外键,而是每个Employee
都有一个EmployeeNo
,并与Company
有一个1-1关系,它有自己的CompanyNo
,因此UserEmployee
表的复合外键由Employee和Company Numbers组成。
我无法直接在UserEmployee
表中链接到EmployeeId,因为实际的系统员工记录是重复的(出于历史记录的原因),并且混合中添加了第三个表。
谢谢