查询创建冗余条目

时间:2012-08-22 18:46:06

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

我已经使用MS Access 2010一段时间了,我有很大的问题。我将附加一个虚拟数据库here以供参考。这很简单,有三个表:2表示数据,1表示多对多关系的结点。我有一个查询,我希望能够输入值。让我们说我输入以下内容:

+-------------+-------------+
|    NameA    |    NameB    |
+-------------+-------------+
|    Frank    |    Bob      |    
|    Frank    |    Harry    |
|    Tom      |    Harry    |
+-------------+-------------+

2个数据表将以冗余条目结束。就好像查询只是添加一个新条目而不管表中已有的内容。我该如何解决这个问题?

提前致谢。

更新: 这里的每个请求是查询代码

SELECT Table1.NameA, Table2.NameB
FROM Table2 
INNER 
JOIN (Table1 INNER JOIN Table3 ON Table1.ID = Table3.IDA) 
ON Table2.ID = Table3.IDB;

3 个答案:

答案 0 :(得分:1)

我找到了答案here

关键点如下:

  1. 通过DataSheet View提供给查询的内置功能非常实用 简单。它只会添加新记录,无论创建多余 条目。

  2. 无法轻松实现所需的功能 查询/表级别。因此我在表格/报告上实施了它 水平。就个人而言,我认为理论上无法实现它 查询/表级别,但我确定那里有VBA大师 谁能做任何事。

  3. 设计人员可以为每个所需的字段使用组合框 多对多的关系。这保证没有多余的条目。然后 添加新条目必须将VBA代码添加到“不在列表中” 组合框的财产。见上面的链接。

  4. 希望这可以帮助将来的某个人。我知道我很高兴。谢谢你的帮助。

答案 1 :(得分:0)

听起来像w3schools.com中的示例 当你进行内连接时,它会从任何列匹配的两个表中获取信息。 我假设两个表中都有其他列。

答案 2 :(得分:0)

通常,交叉引用表会将Table1和Table2连接起来:


SELECT Table1.Name1, Table2.Name2
FROM ((Table1 INNER JOIN TableRef ON Table1.ID1 = TableRef.ID1) INNER JOIN Table2 ON Table2.ID2 = TableRef.ID2)

尝试:


SELECT DISTINCTROW Table1.Name1, Table2.Name2
FROM ((Table1 INNER JOIN TableRef ON Table1.ID1 = TableRef.ID1) INNER JOIN Table2 ON Table2.ID2 = TableRef.ID2)