2012-11-15 16 views
5

Mam dwa tabele dostępu. Jedna tabela (tabela1) ma unikalne pole, MyID, a inna tabela (tabela 2) ma kilka wierszy z MyID i inną kolumną Data. Chciałbym napisać instrukcję SQL, która jest podobna do foreach, gdzie wszystkie wartości dla MyID są wybierane i uśredniane z danych Table2, a następnie aktualizowane w wierszu MyID w innym polu, Śr.SQL foreach za pomocą wierszy tabeli

**Table1** 
MyID 
ID1 
ID2 
ID3 

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

oczekuje wyników, takie jak:

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

Może istnieje lepszy sposób to zrobić w SQL, ale w tej chwili nie wiem.

Odpowiedz

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

Otrzymuję komunikat o błędzie: Silnik db MS Office Access nie może znaleźć obiektu "AVG (dane) avgCol". –

0

To załatwia sprawę w MS Access jako zapytanie, ale nie aktualizowanie w tabeli.

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