【发布时间】:2017-10-08 02:28:18
【问题描述】:
我在 ASP.Net 中使用 Access 2007 数据库,如果项目满足多个“AND”子句,我需要从表中提取数据。
例如:
Select * from tableA
where tableA.column1 = myvalue1
and (tableA.column2 = myvalue2
and tableA.column2 = myvalue3)
('and' 子句周围的 '(' 和 ')' 括号是访问要求)
myvalue1 在 column1 中存在多次,因为 column2 为 column1 的值存储了许多不同的数据。
但是,我只希望结果显示满足所有 column2 搜索条件的 column1 值。
例如,column1 包含员工姓氏,column2 包含员工的资格。
列 1 中的一名员工可能拥有列 2 中的许多资格。
使用 'OR' 子句搜索拥有分配所需的所有资格的员工将为每个员工生成一个包含多行的表。
对于拥有每一项所需资格的每个员工,都需要一行。
假设员工 A 具有资格 X、Y 和 Z。每次将资格添加到第 2 列时,员工的姓名将在第 1 列的一行中,因此员工的姓名在第 1 列中出现 3 次。假设现在员工 B 也有资格 X、Y 和 Z,但员工 C 有 W、X 和 Y。如果分配需要资格 X、Y 和 Z,我不希望员工 C 出现在搜索结果中,因为员工 C 不会' t持有相关资格。
当我使用上面的 'select' 命令和一个 'and' 子句时,搜索工作正常,但是有两个 'and' 子句没有返回任何内容,即使我知道 column1 中的项目同时满足两个 '和'标准。
我在“and”子句的连接中遗漏了什么?
【问题讨论】:
-
您确定不希望在第二和第三子句之间使用 OR 吗?列值几乎不可能等于两个不同的值。我想看看你的数据示例,其中 column2 = value1 和 column2 = value2
-
可以
tableA.column2 = myvalue2 AND tableA.column2 = myvalue3在同一行吗?如果没有,那么您需要在它们之间使用OR。 -
更新您的问题添加适当的数据样本和预期结果
-
添加了更多细节和预期结果
-
对于拥有每一项所需资格的每个员工,都需要一行。将以下内容添加到您的 SQL 中:
GROUP BY column1 ORDER BY column1