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()関数を使用すると簡単です。その Web ページから関数をコピーし、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両方のテーブルで、データ型をテキストから数値に変更することを検討してください。その場合、その式の 3 番目の引数に一重引用符は必要ありませんConcatRelated()

"N_ID = " & [N_ID]

N_IDまた、先頭にゼロを付けて表示する必要がある場合はいつでも、Format()式を使用してください。

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