【发布时间】:2013-01-23 04:59:48
【问题描述】:
我有一个查询,我可以让它工作的唯一方法是在三个字段上左连接。如果我对这三个字段进行普通的内部联接,则查询不会返回任何内容。但是,如果我分别尝试每个人加入,他们都会按照我的预期加入,例如鲍勃到鲍勃,书店到书店,面包到面包等等。
那么对于这两组查询结果...
1.Manager 1.Shop 1.Product 1.Cost 2.Manager 2.Shop 2.Product 2.Quantity
Bob Hardware Spanners 15 Bob Hardware Spanners 3
Terry Food Bread 12 Terry Food Bread 4
Sue Bookshop Books 18 Sue Bookshop Books 7
...此查询不返回任何结果:
SELECT 1.Manager, 1.Shop, 1.Product, 1.Cost, 2.Quantity
FROM 1 INNER JOIN 2 ON 1.Manager = 2.Manager AND 1.Shop = 2.Shop AND 1.Product = 2.Product;
我知道加入文本并不理想,但我有类似的查询可以毫无问题地加入这三个字段,所以想知道这是否是我遇到的 Access 的“功能”,或者它是否可能是数据有问题?
-编辑-
通过将 JOIN 条件放入 WHERE 子句中,我发现,如果我有 WHERE 1.Manager = "Bob" AND 2.Manager = "Bob:
WHERE 1.Product = "Spanners"
独立工作,并且:
WHERE 2.Product = "Spanners"
单独工作,但将两者结合起来:
WHERE 1.Product = "Spanners" AND 2.Product = "Spanners"
再次没有返回任何东西!
-编辑 2-
主查询在引用表中的数据时确实表现正常。因此,基本查询返回结果的方式可能有些奇怪。
-编辑 3-
这是问题示例的链接:[链接已删除]
01 顶级查询:这两个是相同的,但一个是指表,并且有效;而另一个是指查询,并且不起作用。我想知道为什么查询版本不起作用。
02 2nd Level Queries and Tables:每组数据有两个版本 - 一个是查询,另一个是使用 Make Table 版本的查询创建的表。据我所知,两者都是相同的。
03 和 04 级查询:这些是构成第二级查询的较低级别查询
表:这些是构建所有其他查询的基础表。
【问题讨论】:
-
这有点奇怪,不是预期的行为,出于兴趣,您是否尝试将查询连接写入
where部分,对于简单的内部连接,这应该不会导致问题? -
上面已经测试并添加了。
-
只是一个想法:您是否考虑过将 (Manager, Shop, Product) 元组放入自己的表中,并在其他两个表中使用该表中的 ID?或者是否有某些原因数据不适合这种安排?
-
更多的是我的大脑不适合这种安排。 :)
-
你需要把这些查询后面的查询的sql贴出来。显然,如果样本数据在表格中,这些问题就不会存在。
标签: ms-access left-join inner-join resultset missing-data