【发布时间】:2019-06-26 16:22:44
【问题描述】:
我有几个具有相同数据结构的表(它们充满了一堆东西,在单独的 .accdb 文件中以说明 2GB 的限制)并且需要根据一个字段从其中一个中检索信息表格。
经过研究,我想出了以下方法,但它似乎不起作用。
SELECT MyNumber, MyName, MyPage, MyDrawing
FROM Switch([Forms]![View_Info]![Contract] = "Contract1", "tblContract1", [Forms]![View_Info]![Contract] = "Contract2", "tblContract2")
WHERE (MyNumber = [Forms]![View_Info]![MyNumber])
FROM 子句中的语法错误。 在此示例中,我只使用了 4 个字段和 2 个表,但实际上我希望检索大约 9 个表和 20 个字段。
有人可以解释一下吗?我很难使用 SQL,所以如果这是非常基本的,我深表歉意。
提前致谢,拉斐尔。
【问题讨论】:
-
SWITCH()是一个返回标量值的函数,通常用于SELECT子句。 -
这不是真正的问题。在 MS Access 中,
FROM和JOIN中不允许引用表的函数。 -
顺便说一下,考虑重新设计数据库。即使有 MS Access 的单个文件限制,也应该进行规范化。像 tblContract1、tblContract2、... 这样的编号表并不是最佳设置。将所有合同保存在一个数据库中,将其他项目保存在其他数据库中,并根据需要进行链接。
-
您会惊讶于normalization 无法解决的业务逻辑有多少。如果你找到一个例子,请分享!此外,存储效率更高,避免了冗余和复杂查询,您可以更好地运用参照完整性(一对一、一对多关系)!从今天开始重新设计。祝你好运!
-
@Parfait 最终进行了重新设计,花了我一段时间,但事情变得更顺利了。感谢您的提示,我很快就会跪下:p