2012-11-15 13 views
5

Tôi có hai bảng Truy cập. Một bảng (bảng 1) có một trường duy nhất, MyID và một bảng khác (bảng 2) có một số hàng với MyID và một cột khác, Dữ liệu. Tôi muốn viết một câu lệnh SQL tương tự như một foreach nơi tất cả các giá trị cho MyID được chọn và tính trung bình từ dữ liệu của bảng2 và sau đó được cập nhật trong hàng MyID trong một trường khác, Tr.bình.Tìm kiếm bằng cách sử dụng các hàng trong bảng

**Table1** 
MyID 
ID1 
ID2 
ID3 

**Table2** 
MyID Data Mon 
ID2 10  Jan 
ID2 20  Feb 
ID1 10  Jan 
ID3 30  Mar 
ID1 30  Mar 

kết quả Mong như:

**Table1** 
MyID Avg 
ID1  20 
ID2  15 
ID3  30 

Có thể có một cách tốt hơn để làm điều này trong SQL, nhưng hiện tại không biết.

Trả lời

5
UPDATE table1 
     INNER JOIN 
     (
      SELECT Data1, AVG(columnName) avgCol 
      FROM table2 
      GROUP BY Data1 
     ) b ON table1.MyID = b.Data 
SET  table1.avgColumnName = b.avgCol 
+0

Tôi nhận được thông báo lỗi: MS Office Access cơ db không thể tìm thấy 'AVG (dữ liệu) avgCol' đối tượng. –

0

này hiện các trick trong MS Access như một truy vấn nhưng không được cập nhật vào một bảng.

SELECT Table2.[MyID], Avg(Table2.[Data]) AS [AVG] 
FROM Table2 
GROUP BY Table2.[MyID]