2012-11-07 13 views
6

私はいくつかのインストラクターデータを集計しようとしています(インストラクターが1学期にどのコースを教えているかを簡単に表示するため)各インストラクター。しかし、インストラクターの指導を一列にすることができれば、ビジネスプロセスによっては有益です。ここではいくつかの例のデータがある(私のテーブルはより多くの列を持っていますが、一般的な考え方はあまり変わりません関連する行の値を1つの連結された文字列値に結合する

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 

何をI返信したい:

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

私はtbl_InstruからすべてのN_IDを選択すると何かをする必要があると思いますその後、tbl_CoursesからCourse_IDsを連結を介して返すが、その魔法のステップは私に言及している。どんな助け?私はSQLの選択を介してこれを行うことができますか、私はVBを使用する必要がありますか?

+0

クロス集計クエリを確認しましたか?ウィザードがあります。 – Fionnuala

+0

代わりに:http://stackoverflow.com/questions/92698/combine-rows-in-access-2007/93863#93863 – Fionnuala

+0

@Remouクロスタブを試しましたが、何百もの列になったので理想的ではありませんでしたコースごとに個別の列)。私がもっと間違っているかどうかを調べるために、私はもっと読むことになるでしょう。 – RoccoMaxamas

答えて

12

これは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というデータ型を両方の表のテキストから数値に変更することを検討してください。それを行うと、そのConcatRelated()式の3番目の引数に一重引用符は必要ありません。

"N_ID = " & [N_ID] 

そして、あなたが先行ゼロで表示さN_IDが必要なとき、Format()式を使用します。

Format(N_ID, "000") 
+0

感謝します!これは私がレイアウトしたテストデータと完全に機能しました(残念ながら@Remouが与えた情報を理解することはできませんでした)。今私はそれを私が持っている実際の生産データに統合するつもりです。 – RoccoMaxamas

+0

答えが列挙されているように、私はなぜコードを正確に実行しているのですか?エラーが表示されます: "クエリ式ConcatRelated(" field "、" tbl "、" ID = "&[ID])のあいまいな名前この記事や他の記事を読んでかなりの時間を費やしましたが、運が無ければ、私の構文とテーブル構造は上記のものとほとんど同じです。 179007 –

関連する問題