Ms access 将相关行中的值合并为单个串联字符串值

Ms access 将相关行中的值合并为单个串联字符串值,ms-access,Ms Access,我正在尝试汇总一些讲师数据(以方便显示讲师在一个学期中教授了哪些课程),到目前为止,我只接受为每个讲师设置多行。但是,如果我可以将讲师的所有教学内容放在一行中,这将有助于某些业务流程。下面是一些示例数据(我的表有更多的列,但总体思路不会有太大变化) tbl_讲师有: N_ID | F_Name | L_Name 001 Joe Smith 002 Henry Fonda 003 Lou Reed tbl_课程有:

我正在尝试汇总一些讲师数据(以方便显示讲师在一个学期中教授了哪些课程),到目前为止,我只接受为每个讲师设置多行。但是,如果我可以将讲师的所有教学内容放在一行中,这将有助于某些业务流程。下面是一些示例数据(我的表有更多的列,但总体思路不会有太大变化)

tbl_讲师有:

    N_ID | F_Name | L_Name
    001    Joe      Smith
    002    Henry    Fonda
    003    Lou      Reed
tbl_课程有:

    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_讲师那里选择所有N_ID,然后通过连接从tbl_课程返回课程ID,但这一神奇的步骤暗示了我。有什么帮助吗?我可以通过SQL selects或我需要使用VB吗?

这很容易使用Allen Browne的函数。从该网页复制函数并粘贴我t进入一个访问标准代码模块

然后,此查询将返回您请求的内容

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\u ID
的数据类型从文本更改为数字。如果这样做,则不需要将第三个参数中的单引号添加到
ConcatRelated()
表达式中

"N_ID = " & [N_ID]
Format(N_ID, "000")
每当需要用前导零显示
N\u ID
时,请使用
Format()
表达式

"N_ID = " & [N_ID]
Format(N_ID, "000")

你看过交叉表查询吗?这里有一个向导。或者:@Remou我尝试过交叉表,但并不理想,因为它产生了数百列(每门课程一列)。我会仔细阅读,看看我是否做错了。在这种情况下,请查看链接。它是关于连接行的。谢谢!这与我列出的测试数据非常吻合(很遗憾,我无法计算@Remou提供的信息).现在我要将它集成到我拥有的实际生产数据中。知道我为什么按照列出的答案运行代码了吗?我得到一个错误:“查询表达式ConcatRelated(“field”、“tbl”、“ID=”&[ID]”中的名称不明确)我花了相当多的时间阅读这篇文章和其他文章,但运气不好,我的语法和表结构几乎与上面列出的完全相同。文章:@TylerJones去年夏天你发表评论时我不在。我跟踪了你评论中的链接,但这无助于我理解你的问题。如果你仍然需要帮助,我建议你发一个新问题。