我有Table1,它使用PK / FK链接到许多其他表。现在我想创建Table1中所有记录的导出,并且对于Table1的每个记录,显示Excel中其他表的所有值,而不是FK字段中的FK。问题在这里 - 我在Table1中有一些记录,其中所有字段都已满(包括那些是FK),有些则没有。因此,那些未链接到其他表的FK字段为空白,Access仅在查询中显示链接记录。
关于如何使Access能够在Excel电子表格的一行中显示所有数据的任何想法?
编辑:
我的表格(表格员工与表格APPS链接4次 - FK_fields,但Access仅显示1个关系)
我的输出应该包含来自表APPS的所有那些字段在1行中,但是包含所有链接表字段而不是FK_fields值。 1行的示例(所需的输出顺序后跟表APPS-SUPPLIERS-EMPLOYEES-VERSION-HARDWARE-APPS_HARDWARE):
1234 |访问|程序|是|微软|洛杉矶第14街| Mike Brown | David Fox | John Long | Sally Sugar | 25.08.2016 | Ver.1 |第1版| 25.08.2016(版本日期)| PC |台式电脑| 25.08.2016(硬件日期)|有效期| 25.08.2016(APPS-HARDWARE记录日期)
答案 0 :(得分:2)
您需要学习并使用表连接,左连接和/或右连接。左连接表示即使表右侧没有匹配的记录,也会向我显示写在左侧的表中的所有数据。一个简单的例子,
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
缺少的数据将填充NULL。
如果您使用的是Access的查询设计视图,则可以利用它来帮助创建SQL语句。我将主表放在左边,并将连接的表展开到右边。双击连接线以将它们修改为左连接或右连接。
你最终会得到这样的东西,虽然它需要一些格式来整齐地显示:
SELECT
tblStaff.FirstName, tblOffices.OfficeName, tblDepts.Department,
tblHolidays.FirstDate
FROM (tblOffices
RIGHT JOIN (tblDepts
RIGHT JOIN tblStaff
ON tblDepts.DeptID = tblStaff.Department)
ON tblOffices.OfficeID = tblStaff.OfficeID)
LEFT JOIN tblHolidays
ON tblStaff.StaffID = tblHolidays.StaffID;