我正在使用MS Access,我的情况相当复杂。
我有通过2个连接表链接到不同数量的不同公司的受访者。我希望能够创建一个不同客户的列表,其中排除了与公司X相关的任何客户。
Here is a pic of the relationships that are involved with the query.
这是我想要实现的一个例子。
RespondentRef | Respondent Name
8 Joe Bloggs
RespondentRef | GroupRef
8 2
GroupRef | CompanyRef
2 10
CompanyRef | CompanyName
10 Ball of String
我想要一个查询,我输入'Ball of String'作为公司名称,然后它生成一个所有受访者的列表(取自Tbl_Respondent),完全排除了受访者8(因为他链接到CompanyName:Ball) of String)。
Tbl_Respondent
RespondentRef | Respondent Name
... ...
7 Bob Carlyle
9 Anton Boyle
我尝试过多次使用<>的子查询组合并且不存在且不存在且似乎没有任何工作。我怀疑这些表的链接方式可能与它有关。
非常感谢您提供的任何帮助。如果您有任何问题,请告诉我。 (我已尽最大努力,但请接受我对任何格式约定或我可能犯过的礼仪失败的道歉。)
非常感谢。
编辑:
我格式化的Frazz代码仍然在转动,导致语法错误。任何帮助将不胜感激。
SELECT *
FROM Tbl_Respondent
WHERE RespondentRef NOT IN (
SELECT tbl_Group_Details_Respondents.RespondentRef
FROM tbl_Group_Details_Respondents
JOIN tbl_Group_Details ON tbl_Group_Details.GroupReference = tbl_Group_Details_Respondents.GroupReference
JOIN tbl_Company_Details ON tbl_Company_Details.CompanyReference = tbl_Group_Details.CompanyReference
WHERE tbl_Company_Details.CompanyName = "Ball of String"
)
答案 0 :(得分:0)
这应该做你需要的:
SELECT *
FROM Tbl_Respondent
WHERE RespondentRef NOT IN (
SELECT gdr.RespondentRef
FROM Tbl_Group_Details_Respondent gdr
JOIN Tbl_Group_Details gd ON gd.GroupRef=gdr.GroupRef
JOIN Tbl_Company_Details cd ON cd.CompanyRef=gd.CompanyRef
WHERE cd.CompanyName='Ball of String'
)