MS ACCESS 查询 table,用于一个 table 中的所有项目,但不是另一个中的所有项目
MS ACCESS Query with junction table, for all items in one table, but not in another
要创建多对多关系,我有三个 table:
tblEmployee
,包含员工
tlkpPermission
,包含员工可以加入的 11 个不同的可能权限组
tblEmployeeXPermission
,将EmployeeID
与一个或多个PermissionID
结合起来
我要创建的是一个查询,显示员工不属于哪些权限组。
因此,如果 EmployeeID
12345
与 PermissionID
1,2,3,4,5,
关联但不是 6,7,8,9,10,11
(在 EmployeeXPermission
table) 然后我希望查询显示 EmployeeID
12345
不是 PermissionID 6,7,8,9,10,11
.
的一部分
在所有的 JOIN 和查询选项中,我只能得到一个查询来显示 PermissionIDs
员工与哪个员工关联,而不是 PermissionIDs
员工未关联的查询。
如有任何帮助,我们将不胜感激。
谢谢
您需要从员工和权限的所有组合开始,这种类型的连接是 CROSS JOIN
,但是 MsAccess SQL 在新的 SQL 语法中没有它。您可以使用在 FROM
子句中列出表的旧语法,以逗号分隔,并在 WHERE
子句中提供连接条件(如果有):
SELECT
EmployeeId,
PermissionID
FROM
tblEmployee as E,
tlkpPermission as P
where not exists (
select 1
from tblEmployeeXPermission X
where X.EmployeeId=E.EmployeeId
and X.PermissionId=P.PermissionId
)
此处 WHERE
子句之前的部分将为您提供所有员工 - 权限组合,而 WHERE
子句会删除 tblEmployeeXPermission 中出现的那些,留下您想要的那些。
要创建多对多关系,我有三个 table:
tblEmployee
,包含员工
tlkpPermission
,包含员工可以加入的 11 个不同的可能权限组
tblEmployeeXPermission
,将EmployeeID
与一个或多个PermissionID
我要创建的是一个查询,显示员工不属于哪些权限组。
因此,如果 EmployeeID
12345
与 PermissionID
1,2,3,4,5,
关联但不是 6,7,8,9,10,11
(在 EmployeeXPermission
table) 然后我希望查询显示 EmployeeID
12345
不是 PermissionID 6,7,8,9,10,11
.
在所有的 JOIN 和查询选项中,我只能得到一个查询来显示 PermissionIDs
员工与哪个员工关联,而不是 PermissionIDs
员工未关联的查询。
如有任何帮助,我们将不胜感激。
谢谢
您需要从员工和权限的所有组合开始,这种类型的连接是 CROSS JOIN
,但是 MsAccess SQL 在新的 SQL 语法中没有它。您可以使用在 FROM
子句中列出表的旧语法,以逗号分隔,并在 WHERE
子句中提供连接条件(如果有):
SELECT
EmployeeId,
PermissionID
FROM
tblEmployee as E,
tlkpPermission as P
where not exists (
select 1
from tblEmployeeXPermission X
where X.EmployeeId=E.EmployeeId
and X.PermissionId=P.PermissionId
)
此处 WHERE
子句之前的部分将为您提供所有员工 - 权限组合,而 WHERE
子句会删除 tblEmployeeXPermission 中出现的那些,留下您想要的那些。