Sql MS access VBA-查询排除
我正在努力设置一个从表中排除某些值的查询。 为了更好地理解,数据库是在临床试验的背景下创建的,我希望通过一个组合框选择尚未参与某项研究的站点,而这些站点可能或可能尚未参与另一项研究 方法如下: tbl_站点-包含唯一的“站点ID”和“站点国家” tbl_研究-contanis是一个独特的“研究ID” tbl_init-每当站点参与研究时,都会生成一个条目,其中包含唯一的“init_ID”、相应的“site_ID”和“study_ID” 查询应选择“tbl_站点”中的所有站点,这些站点在“tbl_ini”中没有与定义的“研究id”匹配的条目。我理解,我应该能够使用左连接来实现这一点Sql MS access VBA-查询排除,sql,vba,ms-access,Sql,Vba,Ms Access,我正在努力设置一个从表中排除某些值的查询。 为了更好地理解,数据库是在临床试验的背景下创建的,我希望通过一个组合框选择尚未参与某项研究的站点,而这些站点可能或可能尚未参与另一项研究 方法如下: tbl_站点-包含唯一的“站点ID”和“站点国家” tbl_研究-contanis是一个独特的“研究ID” tbl_init-每当站点参与研究时,都会生成一个条目,其中包含唯一的“init_ID”、相应的“site_ID”和“study_ID” 查询应选择“tbl_站点”中的所有站点,这些站点在“tbl_
SELECT tbl_site.site_ID, tbl_site.site_country, tbl_init.study_ID
FROM tbl_site LEFT JOIN tbl_init ON tbl_site.site_ID = tbl_init.site_ID
WHERE (((tbl_init.study_ID) Not In ([Form]![frm_init]![study_ID]))) AND ((tbl_site.site_country)=[cbo_country]))
然而,排除值似乎只影响tbl_init中的第一个值。例如:如果我有两个美国网站和两个英国网站,那么所有英国网站和一个美国网站都已经是研究1的一部分。为研究1运行查询实际上会将参与站点从我们这里排除,但仍然会向我显示来自英国的所有站点(我猜这取决于源表中的初始排序)。
最后,我还需要添加“NOTNULL”以添加所有尚未参与任何研究的站点
编辑:下面是一个示例:
如果我理解正确,您正在向查询传递两个参数,即国家和研究Id,并且您希望列出该国家中未参与给定研究Id的所有站点
PARAMETERS [cbo_country] Text ( 255 ), [Forms]![frm_init]![study_ID] Text ( 255 );
SELECT tbl_site.site_ID, tbl_site.site_country, tbl_init.study_ID
FROM tbl_site LEFT JOIN tbl_init ON tbl_site.site_ID = tbl_init.site_ID
WHERE (((tbl_site.site_country)=[cbo_country]) AND ((tbl_site.site_ID) Not In (SELECT tbl_init.site_ID FROM tbl_init WHERE (((tbl_init.study_ID)=[Forms]![frm_init]![study_ID])))));
对这正是我努力实现的目标。问题是:通过这种方式,我得到的不是所有不参与给定研究的站点,而是所有参与其他研究的站点。由于一个站点可能会参与多个研究,因此,一旦该ID出现在多个条目中,站点也会参与另一个研究,或者说是在一般情况下,就不会再被排除在列表之外。工作起来很有魅力。非常感谢!