将相关行的值合并为单个连接的string值

我试图汇总一些教师数据(为了方便地显示一个教师在一个学期中教授的课程),直到现在,我已经接受了每个教练有多行。 然而,如果我能把所有教师的教学都排在一行,对一些业务stream程来说是有好处的。 这里是一些示例数据(我的表格有更多的列,但一般的想法不会有太大的改变。

tbl_Instructors有:

N_ID | F_Name | L_Name 001 Joe Smith 002 Henry Fonda 003 Lou Reed 

tbl_Courses有:

  Course_ID | N_ID | Course_Info AAA 001 PHYS 1 AAB 001 PHYS 2 CCC 002 PHYS 12 DDD 003 PHYS 121 FFF 003 PHYS 224 

我想要回报的是:

  N_ID | First_Name | Last_Name | Course_IDs 001 Joe Smith AAA, AAB 002 Henry Fonda CCC 003 Lou Reed DDD, FFF 

我想我需要从tbl_Instructors中select所有的N_ID,然后通过串联的方式从tbl_Courses中返回Course_IDs,但这个魔术步骤暗示了我。 任何帮助? 我可以通过SQLselect做到这一点,还是我需要使用VB?

使用Allen Browne的ConcatRelated()函数很容易。 从该网页复制function并将其粘贴到Access标准代码模块中。

然后这个查询将返回你所要求的。

 SELECT i.N_ID, i.F_Name, i.L_Name, ConcatRelated( "Course_ID", "tbl_Courses", "N_ID = '" & [N_ID] & "'" ) AS Course_IDs FROM tbl_Instructors AS i; 

考虑在两个表N_ID的数据types从文本更改为数字。 如果这样做,则不需要ConcatRelated()expression式的第三个参数中的单引号。

 "N_ID = " & [N_ID] 

而且每当你需要用前导零显示N_ID ,使用Format()expression式。

 Format(N_ID, "000")