以下是表格及其关系:
我想从与Repairs.DateOut最近的条目相关联的字符串InspectionDetails.Comments中获取一个数字,并将其插入Scopes中的每个记录的Scopes.CurrentUses中。我只想在InspectionDetails.Item = 1时获取这些字符。字符串将被格式化为“Total uses = 0000”,其中数字是可变长度(例如,1,20,1295等)。
SELECT
s1.ScopeName,
r1.DateOut,
i1.Comment
FROM Scopes s1
INNER JOIN Repairs r1 ON s1.ID = r1.AssetID
INNER JOIN InspectionDetails r1 ON r1.ID = i1.RepairID
INNER JOIN (SELECT MAX(r1.DateOut) AS DateOut
FROM Scopes s
INNER JOIN
Repairs r ON s.ID = r.AssetID
INNER JOIN
InspectionDetails i ON r.ID = i.RepairID
GROUP BY s.ID) i2 ON i1.ID = i2.ID
我认为我已经四分之一了,但是我遇到了语法错误而且仍然没有想出如何找到并将数据放入我想要的字段中。当输入修复数据的表单被保存或导航时,它会发生这种情况。
我还附上了空白表格的图片。当子表单保存在TAB上时,保存按钮保存主表单。
答案 0 :(得分:0)
您尚未在i2
的子查询中指定ID。这肯定是一个问题,但不是单一问题:)显然,您不需要Repairs
表,因为您在子查询中引用它。我只看到SELECT
列表中的聚合字段。
为了查询的简洁性和可读性,您可以单独编写和保存子查询。然后在主查询中将它们添加为表格并执行必要的连接等。
E.g。根据您的情况,创建一个名为_LatestRepair
的查询,如下所示:
SELECT s.ID AS ScopeId, r.ID AS RepairID, MAX(r1.DateOut) AS DateOut
FROM Scopes s
INNER JOIN Repairs r ON s.ID = r.AssetID
GROUP BY s.ID, r.ID
然后将此_LatestRepair
查询作为表添加到主查询中,如下所示:
SELECT s1.ScopeName, r1.DateOut, i1.Comments
FROM (_LatestRepair r1 INNER JOIN Scopes s1 ON s1.ID = r1.ScopeId)
INNER JOIN InspectionDetails i1 ON r1.RepairId = i1.RepairID
<强>更新强>
以下是您如何解析评论字段中的数字:
SELECT s1.ScopeName, r1.DateOut, i1.Comments,
InStr([I1].[Comments],"=") AS Expr1,
IIf([Expr1]>0,Val(Right([i1].[Comments],Len([i1].[comments])-[expr1]))) AS Expr2
FROM (_LatestRepair r1 INNER JOIN Scopes s1 ON s1.ID = r1.ScopeId)
INNER JOIN InspectionDetails i1 ON r1.RepairId = i1.RepairID