我一直在研究如何使用多个连接(或子查询)将实体属性映射到另一个表中的列,但我真的很难找到从哪里开始。
我创建了一个 SQL Fiddle 来演示我想要做什么。User
实体应包含一个名为的属性,该属性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 关系。
我们没有使用 Ids 作为外键,而是每个Employee
都有 aEmployeeNo
并且与 a 有 1-1 关系,aCompany
有它自己的CompanyNo
,所以UserEmployee
表的复合外键由 Employee 和 Company Numbers 组成。
我无法直接链接到UserEmployee
表中的 EmployeeId,因为在实际系统中员工记录是重复的(出于历史保存原因),并且在混合中添加了第三个表。
谢谢