2012-11-07 12 views
6

Tôi đang cố gắng tổng hợp một số dữ liệu của người chỉ dẫn (để dễ dàng hiển thị các khóa học mà một giảng viên đã dạy trong học kỳ), và cho đến bây giờ tôi đã chấp nhận có nhiều hàng mỗi người hướng dẫn. Tuy nhiên, nó sẽ có lợi cho một số quy trình kinh doanh nếu tôi có thể có tất cả giảng dạy của một giảng viên trong một hàng duy nhất. Dưới đây là một số dữ liệu ví dụ (bảng của tôi có cột nhiều hơn, nhưng ý tưởng chung sẽ không thay đổi nhiềuKết hợp các giá trị từ các hàng có liên quan thành một giá trị chuỗi được ghép nối đơn

tbl_Instructors có:.

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

tbl_Courses có:

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 

Những gì tôi muốn trở lại là:

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

Tôi nghĩ mình cần làm gì đó với việc chọn tất cả N_ID từ tbl_Instru ctors, sau đó trả lại Course_ID từ tbl_Courses qua nối, nhưng bước ma thuật đó ám chỉ tôi. Bất kỳ giúp đỡ? Tôi có thể làm điều này thông qua SQL chọn hoặc tôi sẽ cần phải sử dụng VB?

+0

Bạn đã xem các truy vấn chéo bảng chưa? Có một thuật sĩ. – Fionnuala

+0

Cách khác: http://stackoverflow.com/questions/92698/combine-rows-in-access-2007/93863#93863 – Fionnuala

+0

@Remou Tôi đã thử dùng crosstab, nhưng nó không lý tưởng vì nó dẫn đến hàng trăm cột (một từng cột riêng lẻ cho mỗi khóa học). Tôi sẽ đọc thêm để xem tôi có làm sai không. – RoccoMaxamas

Trả lời

12

Điều này rất dễ sử dụng chức năng ConcatRelated() của Allen Browne. Sao chép chức năng từ trang web đó và dán nó vào mô-đun mã tiêu chuẩn Access.

Sau đó, truy vấn này sẽ trả về những gì bạn đã yêu cầu.

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; 

Xem xét việc thay đổi kiểu dữ liệu của N_ID từ văn bản sang số trong cả hai bảng. Nếu bạn làm điều đó, bạn không cần dấu nháy đơn trong đối số thứ ba cho biểu thức ConcatRelated() đó.

"N_ID = " & [N_ID] 

được hiển thị với số 0 đứng đầu, sử dụng biểu thức Format().

Format(N_ID, "000") 
+0

CẢM ƠN BẠN! Điều này làm việc hoàn hảo với các dữ liệu thử nghiệm tôi đặt ra (tôi đã không thể tìm ra thông tin @Remou đã không may). Bây giờ tôi sẽ tích hợp nó vào dữ liệu sản xuất thực tế mà tôi có. – RoccoMaxamas

+0

Bất kỳ ý tưởng nào tại sao tôi chạy mã chính xác như câu trả lời được liệt kê và tôi gặp lỗi: "Tên mơ hồ trong biểu thức truy vấn ConcatRelated (" field "," tbl "," ID = "& [ID]) đã dành khá nhiều thời gian đọc bài viết này và những người khác nhưng không may mắn, cú pháp và cấu trúc bảng của tôi gần như chính xác như đã liệt kê ở trên. 179007 –