Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在MS Access中一次创建多个关系?_Sql_Vba_Ms Access_Key_Relationship - Fatal编程技术网

Sql 如何在MS Access中一次创建多个关系?

Sql 如何在MS Access中一次创建多个关系?,sql,vba,ms-access,key,relationship,Sql,Vba,Ms Access,Key,Relationship,我觉得这应该是一个简单的问题,但我似乎在任何地方都找不到答案 我有一个MS Access数据库,当我查看表时,所有键字段都有其正确的键图标,但没有定义任何关系。我需要在所有数据表的“UnitID”键字段之间创建关系。有些关系是一对一的,有些是一对多(或一对无),但这并不重要,我不需要强制引用完整性。我只需要查询数据库,并处理查询结果表,而不是添加任何内容或更改数据。所有UnitID字段都具有相同的名称 现在,我只是拉上“关系”选项卡,拖放每个表的名称,这需要花费很长时间。我可以使用显示表单的“编

我觉得这应该是一个简单的问题,但我似乎在任何地方都找不到答案

我有一个MS Access数据库,当我查看表时,所有键字段都有其正确的键图标,但没有定义任何关系。我需要在所有数据表的“UnitID”键字段之间创建关系。有些关系是一对一的,有些是一对多(或一对无),但这并不重要,我不需要强制引用完整性。我只需要查询数据库,并处理查询结果表,而不是添加任何内容或更改数据。所有UnitID字段都具有相同的名称

现在,我只是拉上“关系”选项卡,拖放每个表的名称,这需要花费很长时间。我可以使用显示表单的“编辑关系”图标,但它仍然需要为每个表重新打开

我正在与一个政府的、可公开下载的Access数据库合作。我意识到访问并不理想,但这是它的格式,也是我工作中应该使用的程序


如果有一种方法可以在界面中实现,那将是最好的,因为我可以直接与办公室中不熟悉宏的其他人共享。但是我以前在Excel中使用过VBA,并且知道一些基本的SQL。我从来没有在Access中使用过宏,所以我不知道它们的容量是多少;如果没有内置功能,是否可以执行此操作?

那么您是否正在谈论MS Access中的关系设计器窗口(数据库工具|关系菜单选项),如图所示?添加所有表后,在一个表上单击UnitID大约需要5秒钟,拖放到另一个表上的UnitID,然后单击Create。我想可能需要一两个小时才能全部完成


为什么一定要建立关系?它们不定义您可以运行的查询。如果您不需要引用完整性,那么无论如何,我看不出它们有什么实际用途

如果您无法运行查询,那么我将在其他地方寻找问题的根源


顺便说一下,一旦解决了这个问题,请考虑一下:如果它们被用作中间结果,您可能不需要实际创建任何查询结果表。因为查询的结果是一个表,所以语法提到“表”的任何地方都可以插入查询。也就是说,查询可以嵌套在其他查询中。我之所以提到这一点,是因为您似乎在说,您需要大量的结果表,这些结果表本身将变得混乱,更不用说它们将占用大量空间,更糟糕的是,它们将是冗余的,并且在源表发生更改时必须重新创建(可能会成为维护的噩梦).

数据库可以在不定义关系的情况下正常运行。要强制执行关系完整性,必须在split db的后端定义关系。因为您不希望这样,所以可以在前端定义关系,但唯一的好处是查询生成器将使用定义的关系在查询中构建JOIN子句。构建代码以编程方式建立关系可能需要与手动设置关系一样长的时间。如果这是一次性的,为什么还要麻烦代码呢?有多少数据表?谢谢!大约有50张桌子,但这不是一次性的工作,我必须再做一次,现在不确定频率。查询设计功能就是问题所在,我需要以一整套方式查询数据并输出表。如果我不定义关系(我尝试过,一厢情愿),它就不起作用。如果我在Access中输入一个SQL查询--“SQL视图”-,它会在不定义关系的情况下工作吗?有点违背了访问的目的,但它可能会解决我的问题…如果我得到了你的要求,是的。但我可以从许多表格中选择作为参考。UnitID字段是通用的——每个表都使用它们来标识每个数据记录的源。有些表有许多具有相同ID的条目,而另一些表则没有。一些表之间有辅助键,但它们并不常见,如果需要,我可以很快手动执行。所有表都通过UnitID相互关联。该数据集是一个关于大学的全国性数据集合,每个包含学校报告数据的记录都有一个单位ID。只是有些表中每个学校有多行,而有些学校不在某些表中。