回答

收藏

将其中具有多个值的多行连接到MS Access中的单行

技术问答 技术问答 59 人阅读 | 0 人回复 | 2023-09-13

我正在尝试创建简单的需求管理数据库。基本上我有2张桌子,如下所示:
5 A# P! Q( ~0 \具有2列的Contract_requirements:% }6 L- E: }1 u2 X1 L3 {
CR_ReqID    |   Description! v) T! R: e; R1 [) \' J
reqCR1      |   Contract req description 1
/ ~+ _" G. I* Q+ O& Z$ ]' \: R% d; \: vreqCR2      |   Contract req description 23 O2 M' v( ?% D8 q
SW_requirements$ m: k4 X' d  H2 ^2 T
Title               |   SW_ReqID     |  RootReq" j2 v! }& d) p3 o
SW req description 1|   reqSW1       |   reqCR1, reqCR2
% g! ?8 c) ]) ~SW req description 2|   reqSW2       |   reqCR1
. F, W2 c8 a+ U& S: }1 ?* V0 _SW req description 3|   reqSW3       |   reqCR29 m0 D3 ^2 L8 d; ]9 J
我想编写查询来接收这样的表:, s. c0 {% X* ^5 @; d
CR_ReqID  |Description                  |where used?/ n5 b' w9 m5 Z
reqCR1    |Contract req description 1   |reqSW1, reqSW2  ( ^4 _7 ?6 h$ T4 Q
reqCR2    |Contract req description 2   |reqSW1, reqSW3; L9 O0 k$ h7 X) M( Q
表“合同要求”和“软件要求”通过“ RootReq”列关联* S5 l9 V! N# U+ t' Q( J% }/ t
香港专业教育学院试图实现艾伦·布朗的代码 http://allenbrowne.com/func-
  r3 P8 a* X! f+ |6 M2 Hconcat.html#Top
1 l- h# @1 ^% P2 E6 v1 G这是我的查询
$ F% J; w2 }  C# a. xSELECT Contract_requirements.CR_ReqID, ConcatRelated("SW_ReqID     ","SW_requirements","RootReq = """ & [CR_ReqID] & """") AS Expr1
- }: {* x0 {$ H' W- T' H/ AFROM Contract_requirements;1 Y/ X( Q( o/ k% ]; g
但我在Access中遇到错误* A3 M& w, h' _! e+ X) _. m
7 v  r4 A' p( |" c* e/ v( C$ i/ {+ P
“错误3831:不能在WHERE或HAVING子句中使用多值字段’RootReq’”" Z  u6 J* W" @  K: ?3 l% n

4 z  w5 v8 V" U你们能帮我使这个工作吗?提前致谢
3 J' `! R# H( A- {  l' Z9 @                7 D  i! R4 t  \" E
解决方案:; |  v! ~2 @$ v1 r9 X9 z
                2 Q& E' _/ X. @8 l$ Q

) _. i+ X: {  X8 `9 M5 ~% f9 n* s- Z3 }/ R+ _
                建立一个查询,将多值字段元素扩展到单个记录。
1 ?6 V4 h2 o" T1 m' E查询1
$ {! _5 `; \3 h* n" ^SELECT SW_Requirements.Title, SW_Requirements.SW_ReqID, SW_Requirements.RootReq.Value / L5 Z! P4 c3 r+ ^/ F
FROM SW_Requirements;6 Z4 V, K, C) o7 h
然后将该查询用作ConcatRelated()函数的源。& r9 W7 `, m; A+ t( s# a! j" ^
SELECT Contract_Requirements.*,
7 w+ o7 t1 p' G* H0 a. k- SConcatRelated("SW_ReqID","Query1","[SW_Requirements.RootReq.Value]='" & [CR_ReqID] & "'") AS WhereUsed2 O- E8 E/ f, e, a- D3 y8 `
FROM Contract_Requirements;5 f0 P9 n8 V; g" y) m+ {
建议不要在命名约定中使用空格或标点符号/特殊字符。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则