Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用组合列为最近日期创建筛选器_Sql_Vba_Ms Access_Embedding - Fatal编程技术网

Sql 使用组合列为最近日期创建筛选器

Sql 使用组合列为最近日期创建筛选器,sql,vba,ms-access,embedding,Sql,Vba,Ms Access,Embedding,我在Access中创建了一个过滤应用程序,它引用了四个简单的表: Employee: Emp_ID, FirstName, LastName Skill: Skill_ID, SkillName, SkillDescription, SkillGroup Employee_Skill: Entry_ID, Emp_ID, Skill_ID, LevelofExperience, Dateupdated SkillGroupName:SkillGroup_ID SkillGroupName`

我在Access中创建了一个过滤应用程序,它引用了四个简单的表:

Employee: Emp_ID, FirstName, LastName 
Skill: Skill_ID, SkillName, SkillDescription, SkillGroup
Employee_Skill: Entry_ID, Emp_ID, Skill_ID, LevelofExperience, Dateupdated
SkillGroupName:SkillGroup_ID SkillGroupName`
该数据库的基本思想是跟踪员工技能以及经验水平的提高与否!随着时间的推移。我面临的问题是,我希望应用程序根据最近更新的技能和员工组合进行筛选。我找到了允许我将这两列用作不同实体的查询:

SELECT DISTINCT Emp_ID, Skill_ID FROM Employee_Skill
WHERE (SELECT MAX(DateUpdated)From Employee_Skill);
它本身就可以完美地工作,但我不知道如何将它合并到我的主查询中,主查询只是将必要的列连接在一起,以获得更轻松的最终用户体验。它不会明显显示Emp\u ID或技能ID。它也不会显示在应用程序的VBA中-1=包括所有历史记录;0=仅包括最新更新的

更新: 通过以下操作,我可以通过主查询选择员工和技能的独特组合:

SELECT 
 Employee.FirstName, 
 Employee.LastName, 
 Max(Employee_Skill.LevelOfExperience) AS LevelOfExperience, 
 Skill.SkillName, 
 Max(Employee_Skill.DateUpdated) AS DateUpdated, 
 Max(SkillGroup.SkillGroupName) AS SkillGroupName
FROM 
 SkillGroup INNER JOIN 
 (Skill INNER JOIN 
  (Employee INNER JOIN 
   Employee_Skill ON 
   Employee.Emp_ID = Employee_Skill.Emp_ID) ON 
  Skill.Skill_ID = Employee_Skill.Skill_ID) ON 
 SkillGroup.SkillGroup_ID = Skill.SkillGroup
WHERE 
 Employee.Active=True
GROUP BY 
 Employee.FirstName, 
 Employee.LastName, 
 Skill.SkillName
ORDER BY 
 Max(Employee_Skill.LevelOfExperience) DESC;

但是,基于此查询构建的表单和报表只能选择查看最新版本。我真的希望有一个动态表单,可以根据需要删除约束。

不确定使用MaxEmployee\u Skill.LevelOfExperience或MaxSkillGroup.SkillGroupName做什么,但我认为您需要坚持查询详细信息行,然后包括另一列标记MaxEmployee\u Skill.DateUpdated筛选器,如:

SELECT 
 Employee.FirstName, 
 Employee.LastName, 
 Employee_Skill.LevelOfExperience, 
 Skill.SkillName, 
 Employee_Skill.DateUpdated, 
 SkillGroup.SkillGroupName,
 iif(max_dateUpdated=dateupdated,1,0) as is_max_DateUpdated
FROM 
 SkillGroup INNER JOIN 
 (Skill INNER JOIN 
  (Employee INNER JOIN 
   Employee_Skill ON 
   Employee.Emp_ID = Employee_Skill.Emp_ID) ON 
  Skill.Skill_ID = Employee_Skill.Skill_ID) ON 
 SkillGroup.SkillGroup_ID = Skill.SkillGroup inner join
 (select  
   empID,
   max(dateupdated) as max_dateUpdated 
  from
   Employee_Skill
  group by 
   empID) mx on
  Employee.empID = mx.empID
WHERE 
 Employee.Active=True