11

我正在尝试汇总一些讲师数据(以轻松显示讲师在一个学期中教授的课程),到目前为止,我刚刚接受了每位讲师的多行数据。但是,如果我可以在一行中完成所有讲师的教学,这将对某些业务流程有益。这是一些示例数据(我的表有更多的列,但总体思路不会有太大变化。

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 中选择所有 N_ID,然后通过连接从 tbl_Courses 返回 Course_ID,但那个神奇的步骤暗示了我。有什么帮助吗?我可以通过 SQL 选择执行此操作还是需要使用 VB?

4

1 回答 1

17

这很容易使用 Allen Browne 的ConcatRelated()函数。从该网页复制函数并将其粘贴到 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两个表中的数据类型从文本更改为数字。如果这样做,则不需要该ConcatRelated()表达式的第三个参数中的单引号。

"N_ID = " & [N_ID]

每当您需要N_ID显示前导零时,请使用Format()表达式。

Format(N_ID, "000")
于 2012-11-07T23:57:09.250 回答