Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Access 2010 SQL:多条件Where子句未正确筛选_Sql_Ms Access 2010_Where Clause - Fatal编程技术网

Access 2010 SQL:多条件Where子句未正确筛选

Access 2010 SQL:多条件Where子句未正确筛选,sql,ms-access-2010,where-clause,Sql,Ms Access 2010,Where Clause,我正在尝试为MS Access 2010编写SQL查询,以选择6个字段的任意组合。我已经在我的查询中写入了63个可能的组合,每个组合都用括号括起来,并用OR分隔。在内部,每个都由和连接。此外,每个字段都设置为向用户请求参数 我遇到的问题是,如果我输入(例如)字段A、B和C的参数,则只返回A和B的筛选值,而查询显示不符合参数条件的项 代码示例: `SELECT Main.DISPATCHER, Main.DateCall, Main.Status, Main.[Pick Up 20], Main.

我正在尝试为MS Access 2010编写SQL查询,以选择6个字段的任意组合。我已经在我的查询中写入了63个可能的组合,每个组合都用括号括起来,并用OR分隔。在内部,每个都由和连接。此外,每个字段都设置为向用户请求参数

我遇到的问题是,如果我输入(例如)字段A、B和C的参数,则只返回A和B的筛选值,而查询显示不符合参数条件的项

代码示例:

`SELECT Main.DISPATCHER, Main.DateCall, Main.Status, Main.[Pick Up 20], Main.[Drop Off 20], Main.Shift, Main.Day, Main.Time, Main.[Call Type], Main.[ETA Given], Main.ZONE, Main.Priority, Main.Comments, Main.DODept, Main.ID, Main.PU, Main.DO, Main.[Pick Up], Main.Caller, Main.DropOff
FROM Main
WHERE (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
       AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
       AND Main.Status=[Status: ACCEPTED or DECLINED?]
       AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
       AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
       AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM]
      AND Main.DISPATCHER=[Which Dispatcher?Ex Justin])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR Main.DISPATCHER=[Which Dispatcher?Ex Justin]
  AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
  AND Main.Status=[Status: ACCEPTED or DECLINED?]
  AND Main.Shift=[What shift?AM/PM]
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex jUSTIN]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DISPATCHER=[Which Dispatcher?Ex Justin]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.Status=[Status: ACCEPTED or DECLINED?]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.[Pick Up 20]=[What Pick Up?Use Facility List])
  OR (Main.[Pick Up 20]=[What Pick Up?Use Facility List]
      AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.[Drop Off 20]=[What Drop Off?-Use Facility List]
      AND Main.Shift=[What shift?AM/PM])
  OR (Main.Shift=[What shift?AM/PM]);` 

任何帮助/逻辑都将不胜感激。谢谢。

是的,这不是一种非常有效的搜索方式。我是说,这个:

OR (Main.Status=[Status: ACCEPTED or DECLINED?])
OR (Main.Status=[Status: ACCEPTED or DECLINED?]
  AND Main.[Pick Up 20]=[What Pick Up?Use Facility List]
  AND Main.[Drop Off 20]=[What Drop Off?-Use Facility List])
逻辑上等同于:

OR (Main.Status=[Status: ACCEPTED or DECLINED?])

那么在中间你有一大堆语句。

[...]
OR Main.DISPATCHER=[Which Dispatcher?Ex Justin]
AND Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:]
AND Main.Status=[Status: ACCEPTED or DECLINED?]
AND Main.Shift=[What shift?AM/PM]
OR [...]
这将基本上覆盖你所有的东西。所有这些条件都必须得到满足

假设不提交字段时,提示的值为NULL。我们还假设您必须提交通话日期范围的两个日期。要执行完整搜索,可以执行以下操作:

WHERE (Main.DISPATCHER=[Which Dispatcher?Ex Justin] OR [Which Dispatcher?Ex Justin] IS NULL)
    AND (Main.DateCall BETWEEN [Enter Start Date:] AND [Enter Ending Date:] OR [Enter Start Date:] IS NULL OR [Enter Ending Date:] IS NULL)
    AND (Main.Status=[Status: ACCEPTED or DECLINED?] OR [Status: ACCEPTED or DECLINED?] IS NULL)
    AND (Main.[Pick Up 20]=[What Pick Up?Use Facility List] OR [What Pick Up?Use Facility List] IS NULL)
    AND (Main.[Drop Off 20]=[What Drop Off?-Use Facility List] OR [What Drop Off?-Use Facility List] IS NULL)
    AND (Main.Shift=[What shift?AM/PM] OR [What shift?AM/PM] IS NULL)

jeezus,所有这些
都是必需的吗?这是我能想到/找到的可能产生所需结果的唯一方法。您的数据库列是否为空?与NULL进行比较不像普通的布尔逻辑。没有整列为NULL,但有几个单元格为NULL。这会对性能产生不利影响吗?我认为实际上并不需要所有的
OR
,例如,您的逻辑包括
或(Main.Status=[状态:接受或拒绝?])
,然后是其他具有相同条件的
,再加上一些附加条件,这些都是多余的。我明白你建议背后的逻辑,但现在它正在返回所有结果。我试过输入多个参数组合,所有参数组合都包括开始日期和结束日期。@atomedic我恐怕不知道,因为除非您缺少括号,否则应该可以工作。我会从消除除一个或两个最简单的条件外的所有条件开始(即,只取20个,然后取20个),并让它为此工作。这应该告诉你需要如何编写条件。从最后一行中删除一个括号,并将整个where子句嵌套在另一组paranthese中,它开始工作了!非常感谢你,阿托梅迪奇啊,是的,看起来我在里面也留了一个括号。我以为我已经把它们都弄到手了。对不起!