2012-11-15 9 views
5

Ho due tabelle di accesso. Una tabella (tabella1) ha un campo univoco, MyID e un'altra tabella (tabella2) ha più righe con MyID e un'altra colonna, Dati. Mi piacerebbe scrivere un'istruzione SQL simile a un foreach in cui tutti i valori per MyID sono selezionati e mediati dai dati di table2 e quindi aggiornati nella riga MyID sotto un altro campo, Avg.SQL foreach utilizzando le righe della tabella

**Table1** 
MyID 
ID1 
ID2 
ID3 

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

in attesa di risultati come:

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

forse c'è un modo migliore per fare questo in SQL, ma al momento non sanno.

risposta

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

Viene visualizzato il messaggio di errore: Il motore db di MS Office Access non riesce a trovare l'oggetto "AVG (Dati) avgCol". –

0

Questo fa il trucco in MS Access come una query, ma non l'aggiornamento in una tabella.

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