【问题标题】:MS Access: query only one criteria in multiple criteria lookup fieldMS Access:在多个条件查找字段中仅查询一个条件
【发布时间】:2018-05-22 03:26:57
【问题描述】:

我有一个 MS Access 数据库,它有一个多条件查找字段,其中包含以下条目:

ID  Names
1   Carl, Daniel
2   Natalia
3   Carl, Natalia
4   Natalia, Carl
5   Carl
6   Natalia
7   Bob
8   Bob
9   Bob, Natalia

我想写一个查询结果:

2   Natalia
6   Natalia

我试过这段代码,但它不起作用:

WHERE (((Table.Name)="Natalia"));

这提供了包括 Natalia 的所有实例:

2   Natalia
3   Carl, Natalia
4   Natalia, Carl
6   Natalia
9   Bob, Natalia

非常感谢您的帮助。

【问题讨论】:

  • 它必须比您分享的更多,可能是标准中的星号,因为yourField.yourTable="Natalia"不会返回记录where yourTable="Bob,Natalia"。另外,请注意所有 ((those((brackets)))) 实际上并没有做任何事情(我知道,它们可能是 Access 放在那里的;我只是想为您简化它!)
  • 感谢 ashleedawg 的评论。名称列是一个访问“查找列”,它与包含所有名称(Carl、Daniel、Natalia、Bob)的表有关系。我不确定这是否相关,但我想我的问题还不够清楚。

标签: sql ms-access ms-access-2010 ms-access-2007


【解决方案1】:

首先,您不应该将列表存储为分隔字符串。正确的做法是使用联结表,每个名称一行。

其次,您的 WHERE 子句(固定列名)应该做您想做的事:

WHERE Names = "Natalia"

如果您想要所有其他行,您可以使用 LIKE:

WHERE Names LIKE "*Natalia*"

【讨论】:

  • 谢谢,戈登,你的想法。 Names 列是一个访问“查找列”,它与包含所有名称(Carl、Daniel、Natalia、Bob)的表有关系。我认为这就是为什么 {WHERE Names = "Natalia"} 不起作用的原因。
  • 当我运行 {WHERE Names = "Natalia"} 我得到:2 Natalia 3 Carl,Natalia 4 Natalia,Carl 6 Natalia 9 Bob,Natalia
【解决方案2】:

我用下面这行代码解决了这个问题:

    HAVING (((Names)="Natalia") AND ((Count(Staffers))=1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多