我正在使用 MS Access,但在编写查询以获得最终结果时遇到了麻烦。也许有人可以伸出援助之手。
我有项目、任务和子任务表。每个表都有一个“Assignees”的相关表。这意味着可以将项目分配给员工,但可以将子任务分配给不同的员工,然后再将子任务分配给其他员工。
现在,当在屏幕上显示此内容时,我查询已分配给任何项目/任务/子任务的员工。我需要显示该数据,但不需要显示其他数据。因此,例如,如果我只查询的员工已被分配到一个任务,那么应该显示该项目和任务,但没有其他项目/任务/也没有子任务。同样,如果我查询仅分配给子任务的员工,那么我只想查看关联的项目和任务。我想我可以通过一系列查询来完成这个……我想……但是有没有一种巧妙的方法可以用来创建这些数据。
简单的带有一系列连接的选择查询可能会起作用,但它不起作用,因为当员工仅被分配到子任务而不是项目或任务时。
感谢您的帮助!
更新了其他信息:
表结构:
CREATE TABLE [dbo].[Projects](
[ProjectID] [int] IDENTITY(1,1) NOT NULL,
[ProjectName] [varchar](100) NULL,
[ClientID] [int] NULL,
CREATE TABLE [dbo].[PM_ProjectAssignee](
[AssigneeID] [int] IDENTITY(1,1) NOT NULL,
[ProjectID] [int] NULL,
[EmployeeID] [int] NULL,
CREATE TABLE [dbo].[PM_ProjectTasks](
[ProjectTaskID] [int] IDENTITY(1,1) NOT NULL,
[ProjectID] [int] NULL,
[TaskID] [smallint] NULL,
CREATE TABLE [dbo].[PM_TaskAssignee](
[AssigneeID] [int] IDENTITY(1,1) NOT NULL,
[ProjectTaskID] [int] NULL,
[EmployeeID] [int] NULL,
CREATE TABLE [dbo].[PM_ProjectSubTasks](
[ProjectSubTaskID] [int] IDENTITY(1,1) NOT NULL,
[ProjectTaskID] [int] NULL,
[SubTaskDesc] [varchar](255) NULL,
CREATE TABLE [dbo].[PM_SubTaskAssignee](
[AssigneeID] [int] IDENTITY(1,1) NOT NULL,
[ProjectSubTaskID] [int] NULL,
[EmployeeID] [int] NULL,
关于我尝试过的查询......很多。我正在实现一个场景,我最终得到了大约六个不同的查询,所有这些查询都最终形成一个(一些查询是用代码构建的以允许过滤)但是最后一个尝试的是:
SELECT ProjectID, ProjectName, EmployeeID, ProjectTaskID, EmployeeID, Association, ProjectSubTaskID, EmployeeID
FROM (qrTest3_Project LEFT JOIN qrTest2_Task ON qrTest3_Project.ProjectID = qrTest2_Task.ProjectID) LEFT JOIN qrtest1_SubTask ON qrTest2_Task.ProjectTaskID = qrtest1_SubTask.Association
WHERE (((qrTest3_Project.EmployeeID)=8)) OR (((qrTest2_Task.EmployeeID)=8)) OR (((qrtest1_SubTask.EmployeeID)=8));
上述查询包括其他查询,这些查询只是将每个项目/任务/子任务加入到各自的受理人表中。如果需要,我也可以发布这些。
我希望提供您需要的其他信息?如果没有,很乐意提供更多。谢谢!