Access 2003中的条件条件

时间:2018-06-26 13:41:24

标签: sql ms-access-2003

我对Access 2003还是很陌生,我在所谓的内部联接方面一直遇到一些问题。我有两个无法编辑的表,因此我要查询它们,两个表之一中的信息与用户的个人资料有关,第二个表是与他们有关的辅助信息,例如电子邮件地址。

我的问题是我需要对表2(辅助)应用条件,但有时记录不存在,因为并非表1的全部都与表2匹配。因此,我选择保留表中的所有字段1,并且仅与表2匹配,但是由于我对表2的标准,除非表2中有值,否则我永远都不会得到结果。

我在表1中有一个字段,让我知道表2中是否会有值,所以我想做的是 if table1val = "1" Then table2val Like "*01*"。到目前为止,这还没有奏效,可能是由于我的错误,所以我想知道在设计视图中是否可行,因为从查找来看,似乎在sql视图中是可能的,但是我没有运气由于我缺乏sql知识,所以尝试这样做。

编辑:我当时所做的工作 表2的标准:

在note_txt下:Like "*help*" Or Like "*HELP*" Or Like "*Help*"

在category_code下:"Emails" Or "Email"

在high_priority_ind下:Like "-1"

所有这些都可以,但是如果该字段显示#Deleted

,则不会返回任何内容

我希望这些标准基于的表1中的字段是何时  prod_marker:Not Like "0"

我的理解是您不能在条件中包含if,因为说如果您将“ 1”作为表1的条件,它的作用就像table1 = 1,而您不能有table1 = if。因此,有没有更好的方法可以解决此问题,因为看来我无法拥有

If(Not (prod_marker) Like "0") Then ((high_priority_ind) Like "-1")

下面是我能够想到的SQL,这只会使我的访问崩溃(我没有包括SELECT和FROM,因为它很长,我不确定是否有必要):

WHERE (((dbo_client_link.link_id_txt)=[Enter Policy Number]) AND
 ((dbo_client_link.link_relationship_code)="O" Or 
(dbo_client_link.link_relationship_code)="J") AND 
((dbo_producer.aga_direct_ind)  Like "0") Or 
(((dbo_producer.aga_direct_ind) Like "-1" ) And 
( (dbo_note.note_txt) Like "*help*" Or 
(dbo_note.note_txt) Like "*HELP*") AND 
((dbo_note.category_code)="Emails" Or 
(dbo_note.category_code)="Email") AND 
((dbo_note.high_priority_ind) Like -1)))

1 个答案:

答案 0 :(得分:0)

  

我的问题是我需要将标准应用于表2(辅​​助),但有时该记录不存在,因为并非表1的全部都与表2匹配。

您需要使用从Table1(主)到Table2(辅助)的左联接。如果在设计视图中执行此操作,则应该能够右键单击联接(两个表之间的线),然后转到联接属性。您要选择包括表1中的所有记录,并且仅包括表2中联接字段相等的那些记录

现在,您可以使用Table1.prod_marker <> "0"表达式作为条件(由于不需要通配符搜索,因此不需要LIKE运算符)。遵循以下原则:prod_marker字段中有哪些类型的值?仅仅是“ 0”和“ 1”,还是您还有其他可能的值?如果您只会看到“ 0”或“ 1”,也可以使用Table1.prod_marker = 1

如果您还想基于Table2中的值过滤记录,则可以添加OR条件(例如high_priority_ind = "-1"UCASE(note_txt) like "*HELP*"UCASE(category_code) like "*EMAIL*"

类似这样的事情: enter image description here