2012-11-15 6 views
5

У меня есть две таблицы доступа. Одна таблица (таблица1) имеет уникальное поле, MyID и другая таблица (table2) имеют несколько строк с MyID и другой столбец Data. Я бы хотел написать инструкцию SQL, которая похожа на foreach, где все значения для MyID выбраны и усреднены из данных Table2, а затем обновлены в строке MyID в другом поле, Avg.SQL foreach с использованием строк таблицы

**Table1** 
MyID 
ID1 
ID2 
ID3 

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

Ожидаемые результаты как:

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

Может быть, есть лучший способ сделать это в SQL, но в настоящее время не знаю.

ответ

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

Я получаю сообщение об ошибке: Механизм доступа MS Office Access не может найти объект «AVG (данные) avgCol». –

0

Это делает трюк в MS Access в качестве запроса, но не обновляется в таблицу.

SELECT Table2.[MyID], Avg(Table2.[Data]) AS [AVG] 
FROM Table2 
GROUP BY Table2.[MyID] 
Смежные вопросы