我已经使用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;
答案 0 :(得分:1)
我找到了答案here。
关键点如下:
通过DataSheet View提供给查询的内置功能非常实用 简单。它只会添加新记录,无论创建多余 条目。
无法轻松实现所需的功能 查询/表级别。因此我在表格/报告上实施了它 水平。就个人而言,我认为理论上无法实现它 查询/表级别,但我确定那里有VBA大师 谁能做任何事。
设计人员可以为每个所需的字段使用组合框 多对多的关系。这保证没有多余的条目。然后 添加新条目必须将VBA代码添加到“不在列表中” 组合框的财产。见上面的链接。
希望这可以帮助将来的某个人。我知道我很高兴。谢谢你的帮助。
答案 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)