webForumDet fria alternativet

insert avg till ett annat table

4 svar · 711 visningar · startad av noshornin

noshorninMedlem sedan aug. 2008816 inlägg
#1

Jag vill ta ut medelvärdet från alla rader i table A där username = B. Sedan vill jag sätta in medelvärdet i table C där username är primär nyckel.

Jag får inte riktigt till det. Någon som kan hjälpa mig?

SPiNMedlem sedan mars 20007 896 inlägg
#2

DBMS?

I MySQL borde du kunna göra;

insert into `table_c` (`user_name`, `average`)
select
    a.`username` as user_name,
    avg(a.`value_field`) as average
from
    `table_a` as a
where
    a.`username`='B'
group by
    a.`username`
noshorninMedlem sedan aug. 2008816 inlägg
#3

Det är mysql. Men jag sa fel, jag menade att man skulle uppdatera table_c. Det finns redan en rad där användaren står.

SPiNMedlem sedan mars 20007 896 inlägg
#4

Jag är inte säker på att följande fungerar, men enligt dokumentationen så går det inte att "...update a table and select from the same table in a subquery" -- det bör alltså gå mot en annan tabell.

update
    `table_c`
set
    `average`=(select avg(`value_field`) from `table_a` where `username`='B' group by `username`)
where
    `user_name`='B'
noshorninMedlem sedan aug. 2008816 inlägg
#5

Det fungerade. Tack så mycket.

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)