2010-06-13 118 views
1

我使用Access和这个SQLSQL相结合的结果

SELECT land.id, land.official_name, vaksiner.vaksiner 
FROM land INNER JOIN (vaksiner INNER JOIN land_sykdom ON vaksiner.id = land_sykdom.sykdom)  ON land.kort = land_sykdom.land 
ORDER BY land.official_name 

的SQL给了我这样的结果:

id official_name vaksiner 

1  a    A 
1  a    C  
2  b    A 
2  b    B 
2  b    C 

但我想,这样它看起来的结果结合起来像这样:

id official_name vaksiner 

1  a    A, C 
2  b    A, B, C 
+0

我还没有下载它,但它看起来像它可能会做你所需要的? http://www.rogersaccesslibrary.com/forum/generic-function-to-concatenate-child-records_topic16.html – 2010-06-13 15:32:22

+0

如果您使用的是VBA或其他界面语言,那么以过程语言来完成此操作可能会更容易。 – dkretz 2010-06-13 15:59:38

回答

1

见艾伦·布朗的ConcatRelated功能(Concatenate values from related records

如果您将现有查询保存为qryVaksinerRaw,则可以构建一个像这样的新查询来生成您所追踪的结果。

SELECT DISTINCT 
    id, 
    official_name, 
    ConcatRelated("vaksiner","qryVaksinerRaw","id = " & [id]) AS vaksiner 
FROM qryVaksinerRaw; 

给函数添加到模块,从网页开始

Public Function ConcatRelated(strField As String, _ 

,并继续包括

End Function 

然后将复制的文本粘贴到您的模块复制功能。

注意ConcatRelated()然后将可用于从内部访问运行的查询。但是,像任何自定义VBA函数一样,它不能用于从外部访问运行的查询(如经典ASP,.Net等)。

+0

我试过了,但我无法让它工作。你如何将它添加到Access?我应该将哪些功能粘贴到模块中(请参阅“如何使用功能http://allenbrowne.com/func-concat.html”的第3步)? – Newbie 2010-06-13 17:41:19

+0

谢谢,现在它可以工作! – Newbie 2010-06-13 18:59:26