我是Stack Overflow的新手,但我认为我已经彻底搜索了这个答案,所以我希望它不是重复的。我也是Access和SQL的新手,所以请耐心等待!我正在学习一切。
我们已经创建了一个教育程序数据库,其中包含许多“多值字段”,这些字段显示为带有复选框的下拉列表。我希望我们事先知道这些不是Access的最佳功能,但这是我们拥有的数据,所以我们必须使用它。
我的问题是,在查询中如何指明检查多个方框的标准?
例如,我想选择并计算在“源”字段中检查了多个框的所有记录 - 这意味着有多少这些程序出现在我们查看过的多个列表中?
值都是字符串。我也已经开始明白,他们每个人都有一个潜在的数值,Access将其编码为,但我不知道如何找出这些不同查找的值。此外,我们所有的数据都存储在一个表中,没有任何其他链接表。
例如:
SELECT [Database Source].Value
FROM [Database]
WHERE ([Database Source].Value = **TWO OR MORE VALUES**)
我无法弄清楚标准语法是指示 TWO OR MORE VALUES 。到目前为止,我唯一的做法是为每个创建组合:
WHERE ([Database Source].Value = Source 1 AND Source 2) OR ([Database Source].Value = Source 1 AND Source 3) OR *(And so on)*
我希望有一种比打包所有可能的组合更有效的方法。
非常感谢任何指导。谢谢!
答案 0 :(得分:0)
好的,如果我理解正确,“数据库”是您的表的名称,“数据库源”是您的多值字段。 (我必须注意,数据库在这个上下文中是一个非常令人困惑的名称,因为它使得sql看起来像我们指的是数据库属性)
您的多值字段基本上以一种奇怪的巫术方式抽象一对多关系。您的[数据库源]包含一个id列表,并且id与另一个具有您可能值的表的关联。如果在查询中引用[数据库源] .value,则会将多值分解为单独的行,因此您不希望这样做。
在我看来,您需要在列中添加另一个字段才能进行分组。如果您有一个可用的ID列。
SELECT Database.[field x],Database.[Database Source]
FROM Database
GROUP BY [field x]
Having Count(Database.[Database Source]) > 1;
答案 1 :(得分:0)
首先,根据您选择的值构建一个字符串。然后,在" IN"中使用该字符串。条款。像这样:
GraphItem
我不确定列表框中的哪一列实际上包含您要搜索的值,如果我知道填充列表框的代码我可能更具体但是上面的代码假设您的值在第一列中柱。 Columns集合从零开始,因此Column(0)是第一列,Column(1)是第二列,等等......