有关Access数据库,我有以下问题:
我有三个表,分别是tblComponents、tblErrors和linkComponentsErrors。这是一个多到多的关系,这意味着一个组件可能有许多错误,而一个错误可能有很多组件。这些a与它们的primaryKey (tblComponents.componentID和tblErrors.errorID)在linkComponentsErrors中链接。两个表的名称都有一个字段。
tblComponents / tblErrors / linkComponentsErrors
|compID|compname| |errID|errname| |compID|errID|
+------------+ +------------+ +------------+
| 1 | HDD-300 | | 1 | E101 | | 1 | 1 |
+------------+ +------------+ +------------+
| 2 | SSD-100 | | 2 | E404 | | 1 | 2 |
+------------+ +------------+ +------------+
| 3 | CPU-i7 | | 3 | E123 | | 2 | 2 |
+------------+
| 2 | 3 |
+------------+
| 3 | 3 |对于级联,我通过艾伦·布朗使用VBA-Code。
当我使用连接执行此查询时
SELECT tblComponents.compName, ConcatRelated("errorID", "linkComponentsErrors", "compID = " &[linkComponentsErrors].[compID]) FROM tblComponents;我明白了:
|compName|Expr|
+------------+
| HDD-300 | 1, 2 |
+------------+
| SSD-100 | 2, 3 |
+------------+
| CPU-i7 | 3 |
+------------+但我想要的是:
|compName|Expr|
+------------+
| HDD-300 | E101, E404 |
+------------+
| SSD-100 | E404, E123 |
+------------+
| CPU-i7 | E123 |
+------------+我迷失在这个连接到错误名称的Concat函数中的SQL语法中。如果你知道这个问题的解决办法,我会非常高兴的。
发布于 2020-06-30 12:25:33
您可以使用我的DJoin函数:
SELECT
tblComponents.compname,
DJoin(
"errname",
"SELECT compID, errname
FROM linkComponentsErrors
INNER JOIN tblErrors ON linkComponentsErrors.errID = tblErrors.errID",
"compID = " & [tblComponents].[compID] & "",
", ") AS errnames
FROM
tblComponents
INNER JOIN
linkComponentsErrors ON tblComponents.compID = linkComponentsErrors.compID
GROUP BY
tblComponents.compname,
DJoin(
"errname",
"SELECT compID, errname
FROM linkComponentsErrors
INNER JOIN tblErrors ON linkComponentsErrors.errID = tblErrors.errID",
"compID = " & [tblComponents].[compID] & "",
", "),
tblComponents.compID
ORDER BY
tblComponents.compID;输出:

发布于 2020-07-01 09:24:31
如果不想使用DJoin,可以执行两个查询并使用Allen的ConcatRelated函数:
一个帮助查询"Hilfsabfrage“,它与链接连接:
SELECT tblErrors.errName, tblErrors.errID, linkComponentsErrors.CompID FROM tblErrors INNER JOIN linkComponentsErrors ON tblErrors.errID = linkComponentsErrors.errID以及主要的查询:
SELECT tblComponents.compName, ConcatRelated("errName", "Hilfsabfrage", "compID = " & [compID]) FROM tblComponents不要在主查询中这样做:从tblComponents.compName选择ConcatRelated("errName“、"Hilfsabfrage”、"compID =“&Hilfsabfrage.compID)。该查询没有Hilfsabfrage。
您还可以在查询中放置多个ConcatRelated。
https://stackoverflow.com/questions/62656728
复制相似问题