2017-08-16 85 views
2

我想检查表“T2”的3个字段的值一起出现在表“T1”每个用户的东西加入这样的:麻烦建立一个SQL连接

![Tentative of illustration] 1

预期的结果:

enter image description here

这是可能的呢?如果是的话,你可以帮忙建立一个查询吗?

谢谢

Link to the MS access file:

+0

是否有用户字段T1? – Parfait

+0

不,T1中的每条记录都代表不同系统特权的组合,不应将这些特权一起授予同一用户。因此,在T2中,我拥有所有用户和所有权限,并且我正在尝试确定谁有*禁止*组合。 –

+0

T1中的行如何不同?是否有其他现场指示器未显示? – Parfait

回答

1

假设基础上发布的例子:只有3个因素和因素在T1的任何领域。

需要在每个表中的唯一标识符字段,自动编号应该服务。

查询:T1_UNION(A UNION查询必须输入(或在查询生成器的SQLView复制/粘贴)。)
SELECT RecID_T1, "R1" AS Cat, R1 AS Data FROM T1 UNION SELECT RecID_T1, "R2", R2 FROM T1 UNION SELECT RecID_T1, "R3", R3 FROM T1;

查询:T2_CROSSTAB
TRANSFORM First(T2.R) AS FirstOfR SELECT T2.U FROM T2 GROUP BY T2.U PIVOT DCount("*","T2","U='" & [U] & "' AND RecID_T2<" & [RecID_T2])+1;

查询:
SELECT T2_CROSSTAB.U, DLookUp("Data","T1_UNION","Data='" & [1] & "'") AS IsMatch1, DLookUp("Data","T1_UNION","Data='" & [2] & "'") AS IsMatch2, DLookUp("Data","T1_UNION","Data='" & [3] & "'") AS IsMatch3 FROM T2_CROSSTAB WHERE ((Not (DLookUp("Data","T1_UNION","Data='" & [1] & "'")) Is Null) AND (Not (DLookUp("Data","T1_UNION","Data='" & [2] & "'")) Is Null) AND (Not (DLookUp("Data","T1_UNION","Data='" & [3] & "'")) Is Null));

使用Joe C的想法,CROSSTAB是不需要的。

查询:Data_GROUPED
SELECT T2.U, T2.R FROM T2 INNER JOIN T1_UNION ON T2.R = T1_UNION.Data GROUP BY T2.U, T2.R ORDER BY T2.U;

查询:
SELECT Data_GROUPED.U, Count(Data_GROUPED.R) AS CountOfR FROM Data_GROUPED GROUP BY Data_GROUPED.U HAVING (((Count(Data_GROUPED.R))=3));

+0

谢谢,但MS Access似乎不支持这些操作。与链接到文件或预期结果的另一个屏幕截图 –

+0

我在MS Access中构建了表和查询 - 所有作品都必须在查询生成器的SQLView中键入(或复制/粘贴)查看我编辑的答案,更改为需要两种方法的唯一ID – June7

+0

令人惊叹!!我可以在那里完成表单,非常感谢! –