2012-08-08 35 views
1

我使用Access在3台脱机计算机上填写数据库中的详细信息。这意味着他们都拥有数据库的副本,做一天的信息填充,然后手动上传到中央数据库。 Horrid,但它是唯一的选择。联合查询 - >在Jet中复制值时选择一个

我有一个预填充数据库,密钥标识符等都是以前确定的;我们正在向这些条目的空白字段添加信息。 (从3个关键字段开始,添加了一些信息字段)。用户选择一个条目并进行编辑而不是创建一个条目。然后,我使用一个脚本,它将每个表格和三个数据库组合成一个表格。用户不会复制工作(这意味着您没有Jack在条目A上工作,Jill也在工作条目A上工作)。

我的问题:如何获得我的联合查询来选择所有条目,即使是未填充的条目,但让填充的条目优先? (又名通过选择填写项,而不是两个空缺项绕过“重复项”的错误?)

例如:

JOHN's DB   JACK's DB    JILL's DB  --->  MASTER DB 
A: 1, 1, __   1, 1, __    1, 1, "Yes"    1, 1, "Yes" 
B: 1, 2, "No"  1, 2, __    1, 2, __     1, 2, "No" 
C: 1, 3, __   1, 3, __    1, 3, "No"    1, 3, "No" 

完全可怕的方式做到这一点(Unioning脱机表,即),但由于许多其他不可控因素,我们没有其他选择。

+0

你为什么想未填充字段?什么是从“是”到空? – Fionnuala 2012-08-08 12:25:14

+0

它不能;它几乎是空的。该字段用于确定是否输入了信息;想象它是一个“是的,我填写了这个条目”。我们从其他来源导出了一些数据,现在正在填写之前不存在的细节。我想要填充的字段,因为它们用于选择;用户只能编辑已经存在并填写的条目,他们不能创建从未存在的条目。未填充的字段需要在第二天使用,因为我只是将主后端复制到其他用户,所以主后端还必须具有剩余的空容器。 – StuckAtWork 2012-08-08 12:43:33

回答

0

如何

SELECT Id, Max(Field) 
FROM (Select Id, Field FROM John 
     Union All ...) 
GROUP BY Id 
+0

我会在几个小时内尝试一次,然后回复你。除此之外,我将不得不使用UNION,我不会吗? MAX()函数是否从3个相同的条目中选择1个(因为前几天的填充条目都是最大值)? UNION(afaik)选择完全唯一的条目,所以'1,1,“是”'返回以及'1,1,__',这仍然允许MAX()工作,但只会选择一个'1,2,“是”| 1,2,“是”,因为它们是相同的,所以不需要选择MAX() – StuckAtWork 2012-08-08 12:58:21

+0

Max会选择一个条目。 Union All比Union更快。在你的问题中,你说每个ID只有一个填充答案。 – Fionnuala 2012-08-08 13:01:16

+0

每个ID填写一个新答案,但其他数据库应知道“此条目已完成”,并且他们知道通过上传其他已完成的条目并引用它。 – StuckAtWork 2012-08-08 13:23:09