【发布时间】:2021-10-06 00:51:47
【问题描述】:
我正在尝试从 Access(2007-2016 文件格式)中的两个表中填充一个组合框。
我有两张桌子:
tblSurveyStatus
| SurveyID | SurveyStatus |
|---|---|
| 1 | Y |
| 2 | N |
| 3 | N/A |
tblWorkOrder
| WONumber | SurveyedID |
|---|---|
| WO2101 | 1 |
| WO2102 | 1 |
| WO2103 | 2 |
| WO2104 | 3 |
| WO2105 | 2 |
| WO2106 | {Empty} |
| WO2107 | {Empty} |
期望的结果:
| WONumber(this col will get hidden) | SurveyStatus |
|---|---|
| WO2101 | Y |
| WO2103 | N |
| WO2104 | N/A |
此查询在组合框的数据源中有效,无需使用 GROUP BY:
SELECT SurveyedID, SurveyStatus
FROM [tblWorkOrders] a
LEFT JOIN (
SELECT SurveyID, SurveyStatus
FROM [tblSurveyStatus]
) b
ON a.SurveyedID = b.SurveyID
ORDER BY b.SurveyID
此查询的问题在于它返回重复项 (Y,Y,N,N,N/A)。
所以我这样介绍了 GROUP BY:
SELECT SurveyedID, SurveyStatus
FROM [tblWorkOrders] a
LEFT JOIN (
SELECT SurveyID, SurveyStatus
FROM [tblSurveyStatus]
) b
ON a.SurveyedID = b.SurveyID
GROUP BY a.SurveyStatus ORDER BY b.SurveyID
这会导致错误消息“您的查询不包含指定的表达式 'SurveyedID' 作为聚合函数的一部分。”所以,我输入了MIN(SurveyedID),错误消息移到了下一个字段,所以我一直把 MIN() 放在 SQL 中,直到它最终起作用,但是,我得到一个输入框,要求输入“SurveyStatus”,然后另一个输入框要求“调查 ID”。
我花了整整三天的时间研究、阅读本网站和许多其他网站上的主题,但没有成功。我不是程序员,但我有点了解基础知识。我的编程基本上来自于查找代码的 sn-ps 并更改它们以供我使用。请帮忙!
【问题讨论】:
-
阅读
DISTINCT -
你能解释一下组合框中你想要什么的语义吗?看起来您想要工作订单表中使用的所有可能的调查状态值,但是您如何决定要排除哪些重复的工作订单?
-
我只需要提取包含每个 SurveyStatus 的第一个(或任何一个)WONumber。一旦我从组合框中选择一个,它就会找到该记录,然后将焦点设置在 SurveyedStatus 上并过滤以显示具有该状态的所有记录。希望能帮助你理解。