如何检索具有 5 个特定特征的员工列表?



我有一个表格EmpTraits,里面列出了员工及其特征。因此,此表将列出每个员工及其所有特征(只要特征不同,就可以多次列出员工,因此此表没有 2 条具有相同员工和相同特征的记录)。

`Table: EmpTraits
+------------+---------+
| EmployeeID | TraitID |
+------------+---------+`

假设我有一个名为EmpXTraits(员工X特征)的VIEW,它只列出了员工X具有的所有特征(总共5个)。

`Table: EmpXTraits
+------------+---------+
| EmployeeID | TraitID |
+------------+---------+
|     X      +    1    +
|     X      +    2    +
|     X      +    3    +
|     X      +    4    +
|     X      +    5    +
+------------+---------+`

从这两个表中,我尝试查询具有 VIEWEmpXTraits中显示的所有特征的所有 EmployeeID 的列表。

到目前为止,我有以下查询,但问题是显示与员工 X 具有完全相同特征的员工。因此,如果另一名员工具有所有这些相似的特征以及更多,他就不会出现。

`
SELECT DISTINCT EmpTraits.EmployeeID
FROM   EmpTraits INNER JOIN EmpXTraits ON 
EmpTraits.EmployeeID = EmpXTraits.EmployeeID
WHERE  EmpTraits.TraitID IN (
SELECT EmployeeID 
FROM EmpXTraits
);`

我如何更改此查询以显示至少具有员工 X 特征的所有员工的任何想法(只要他们拥有员工 X 拥有的所有特征,他们就可以拥有更多特征)。

谢谢!!

请尝试以下操作。(无需事先知道EmpXTraits中有多少个特征)

SELECT DISTINCT ee.EmployeeID
FROM EmpTraits AS ee
WHERE NOT EXISTS (SELECT x.TraitID FROM EmpXTraits AS x 
EXCEPT 
SELECT e.TraitID FROM EmpTraits AS e 
WHERE e.EmployeeID = ee.EmployeeID);
SELECT EmpTraits.EmployeeID, Count(EmpTraits.TraitID)
FROM   EmpTraits 
INNER JOIN EmpXTraits ON EmpTraits.EmployeeID = EmpXTraits.EmployeeID
Group BY EmpTraits.EmployeeID
Having Count(EmpTraits.TraitID) > 4

我认为这将解决问题。

最新更新