Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
SQL/MS Access 2010-其中有多个条件未返回正确值_Sql_Ms Access 2010 - Fatal编程技术网

SQL/MS Access 2010-其中有多个条件未返回正确值

SQL/MS Access 2010-其中有多个条件未返回正确值,sql,ms-access-2010,Sql,Ms Access 2010,“COD_p”是用户给定的参数。 我想得到所有与COD_P匹配的值,t.FIRST不是1,t.FINAL不是1000到1100,但是返回的值不包括t.FIRST=1的项目,而不管它们是否有t.FINAL=5 例如: COD_P=1的用户输入 在塔贝,我有: SELECT t.COD, t.ITEM, t.FIRST, t.FINAL FROM TabE t WHERE t.COD = COD_P AND t.FIRST NOT IN(1) AND t.FINAL NOT IN(1000,1100

“COD_p”是用户给定的参数。 我想得到所有与COD_P匹配的值,t.FIRST不是1,t.FINAL不是1000到1100,但是返回的值不包括t.FIRST=1的项目,而不管它们是否有t.FINAL=5

例如: COD_P=1的用户输入

在塔贝,我有:

SELECT t.COD, t.ITEM, t.FIRST, t.FINAL
FROM TabE t
WHERE t.COD = COD_P AND t.FIRST NOT IN(1) AND t.FINAL NOT IN(1000,1100)
他应该返回第二个和第三个值。

问题1:中的
并不意味着你似乎在使用它

要说“
t.FIRST
不是1”,您应该使用
t.FIRST 1
(尽管在这种情况下,您所做的可能会起作用)

要说“
t.FINAL
不是1000到1100”,您应该使用
t.FINAL而不是1000到1100之间的
。例如,你写的东西会允许1050,这与你对你想要的东西的描述不符

问题#2:想要的逻辑不清楚

当您谈论不正确的结果时,您的意思是您只想排除FIRST为1,FINAL为1000到1100之间的记录(因为您的意思似乎是FIRST=1,FINAL=5不应该被排除)。这不是您的书面描述所说的,也肯定不是您的查询逻辑所说的。如果这是你想要的,你需要像

| COD | ITEM | FIRST | FINAL |
|   1 |   12 |     1 |  1000 |
|   1 |   12 |     1 |     2 |
|   1 |   12 |     1 |    10 |
|   1 |   12 |     1 |  1100 |
|   2 |   12 |     1 |  1000 |
|   3 |   12 |     1 |  1000 |
|   3 |   12 |     1 |  1000 |
|   4 |   12 |     1 |  1000 |
|   5 |   12 |     1 |  1000 |

由于这些条件不是可加性的,即不能一起考虑,因此可以使用
运算符:

AND NOT (FIRST = 1 AND FINAL BETWEEN 1000 AND 1100)

给定上述查询、示例数据和输入,预期结果是不返回任何记录。这不是你看到的吗?这是基于
和t.FIRST NOT IN(1)
,这将排除所有样本记录。
“并且不关心它们是否有t.FINAL=5。”
SELECT t.COD, t.ITEM, t.FIRST, t.FINAL
FROM TabE t
WHERE t.COD = COD_P AND (t.FIRST NOT IN(1) OR t.FINAL NOT IN(1000,1100))