0

我一直在研究如何使用多个连接(或子查询)将实体属性映射到另一个表中的列,但我真的很难找到从哪里开始。

我创建了一个 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,因为在实际系统中员工记录是重复的(出于历史保存原因),并且在混合中添加了第三个表。

谢谢

4

0 回答 0