从所有链接表导出到Excel的1个表

时间:2016-08-25 10:10:38

标签: sql ms-access ms-access-2010

我有Table1,它使用PK / FK链接到许多其他表。现在我想创建Table1中所有记录的导出,并且对于Table1的每个记录,显示Excel中其他表的所有值,而不是FK字段中的FK。问题在这里 - 我在Table1中有一些记录,其中所有字段都已满(包括那些是FK),有些则没有。因此,那些未链接到其他表的FK字段为空白,Access仅在查询中显示链接记录。

关于如何使Access能够在Excel电子表格的一行中显示所有数据的任何想法?

编辑:

我的表格(表格员工与表格APPS链接4次 - FK_fields,但Access仅显示1个关系)

enter image description here

我的输出应该包含来自表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记录日期)

1 个答案:

答案 0 :(得分:2)

您需要学习并使用表连接,左连接和/或右连接。左连接表示即使表右侧没有匹配的记录,也会向我显示写在左侧的表中的所有数据。一个简单的例子,

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

缺少的数据将填充NULL。

SQL - LEFT JOINS

如果您使用的是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;

enter image description here