table 中的子引用/报告生成以显示访问中的子引用
Sub references within a table / report generating to show sub references in access
我使用的是 Access 2010,我继承了包含培训科目的 table。其中一些科目是主要科目,一些是主要科目的子领域(都在同一个 table 中)。主要 table 由数字索引:
ID | Type | Department | Subject | Sub 1 | Sub 2 | Sub 3
----+-----------+---------------+-----------------------------------+-----------+-----------+-----------
1 | Main | Candy | Chocolate covered bananas | 2 | 3 | 4
2 | Sub | Candy | Melting Chocolate | | |
3 | Sub | Candy | Dipping machine | | |
4 | Sub | Candy | Freezer Operation | | |
5 | Main | Candy | Chocolate covered Strawberries | 2 | 3 |
我正在尝试制作一份报告,该报告将显示主要主题,然后显示作为主要主题的子要求的所有内容。所以报告看起来像这样:
糖果部
巧克力香蕉
- 融化巧克力
- 浸胶机
- 冷冻操作
巧克力草莓
- 融化巧克力
- 浸胶机
等...
我不知道如何使关系或查找命令正确以获取正确的引用。我开始怀疑我必须将 table 分成两部分 - 一个用于主要科目,一个用于子要求。不过,这不是一个很好的选择,因为它有点大 table 并且链接到其他报告和查询。其中一些主题包含多达 10 个子区域(table 中的字段比我在这里指出的要多,但其中很多对于解决方案来说并不是真正必要的)
这可以通过编写 "Union" 查询来完成。
Select Access 中的 "SQL" 查看模式可以处理此类查询。
这里的目标是 "unpivot" 数据,以便每个子类型都有一个对主类型的引用。
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 1] = Table1_1.ID
UNION
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 2] = Table1_1.ID
UNION
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 3] = Table1_1.ID;
对于每个子类型,您的输出应该有 1 行。
我使用的是 Access 2010,我继承了包含培训科目的 table。其中一些科目是主要科目,一些是主要科目的子领域(都在同一个 table 中)。主要 table 由数字索引:
ID | Type | Department | Subject | Sub 1 | Sub 2 | Sub 3
----+-----------+---------------+-----------------------------------+-----------+-----------+-----------
1 | Main | Candy | Chocolate covered bananas | 2 | 3 | 4
2 | Sub | Candy | Melting Chocolate | | |
3 | Sub | Candy | Dipping machine | | |
4 | Sub | Candy | Freezer Operation | | |
5 | Main | Candy | Chocolate covered Strawberries | 2 | 3 |
我正在尝试制作一份报告,该报告将显示主要主题,然后显示作为主要主题的子要求的所有内容。所以报告看起来像这样:
糖果部
巧克力香蕉
- 融化巧克力
- 浸胶机
- 冷冻操作
巧克力草莓
- 融化巧克力
- 浸胶机
等...
我不知道如何使关系或查找命令正确以获取正确的引用。我开始怀疑我必须将 table 分成两部分 - 一个用于主要科目,一个用于子要求。不过,这不是一个很好的选择,因为它有点大 table 并且链接到其他报告和查询。其中一些主题包含多达 10 个子区域(table 中的字段比我在这里指出的要多,但其中很多对于解决方案来说并不是真正必要的)
这可以通过编写 "Union" 查询来完成。
Select Access 中的 "SQL" 查看模式可以处理此类查询。
这里的目标是 "unpivot" 数据,以便每个子类型都有一个对主类型的引用。
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 1] = Table1_1.ID
UNION
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 2] = Table1_1.ID
UNION
SELECT Table1.ID AS MainID
, Table1.Department AS MainDepartment
, Table1.Subject AS MainSubject
, Table1_1.ID AS SubID
, Table1_1.Department AS SubDepartment
, Table1_1.Subject AS SubSubject
FROM Table1
INNER JOIN Table1 AS Table1_1 ON Table1.[Sub 3] = Table1_1.ID;
对于每个子类型,您的输出应该有 1 行。