Hei.
Miten saan siirrettyä tietoa toisesta taulusta toiseen?
Eli esim. miten saan taulusta 2 siirrettyä A:lle ja C:lle uudet viim_ostos_2-kentän arvot tauluun 1? Avaimena on tietty Asiakas_nro ja taulujen kenttätyypit ovat samat.
Kyseessä on siis MSSQL 2005
Ao. lause on ilmeisesti sinnepäin:
update Taulu1
set viim_ostos_1=viim_ostos_2
where Taulu1.Asiakas_nro_1=Taulu2.Asiakas_nro_2
Taulu1
Asiakas_nro_1, viim_ostos_1
0001, 010101
0002, 020202
0003, 030303
Taulu2
Asiakas_nro_2, viim_ostos_2
0001, 070707
0003, 060606
Miten saan siirrettyä tietoa toisesta taulusta toiseen?
Eli esim. miten saan taulusta 2 siirrettyä A:lle ja C:lle uudet viim_ostos_2-kentän arvot tauluun 1? Avaimena on tietty Asiakas_nro ja taulujen kenttätyypit ovat samat.
Kyseessä on siis MSSQL 2005
Ao. lause on ilmeisesti sinnepäin:
update Taulu1
set viim_ostos_1=viim_ostos_2
where Taulu1.Asiakas_nro_1=Taulu2.Asiakas_nro_2
Taulu1
Asiakas_nro_1, viim_ostos_1
0001, 010101
0002, 020202
0003, 030303
Taulu2
Asiakas_nro_2, viim_ostos_2
0001, 070707
0003, 060606
Vastaukset 1
Vanhimmat
Mikkisoftan SQL-variantista minulla ei ole tietoa, mutta oletan, että tämä MySQL-lause antaa riittävästi apua:
UPDATE Taulu1
SET viim_ostos_1 =
( SELECT viim_ostos_2 FROM Taulu2
WHERE Taulu1.Asiakas_nro_1 = Taulu2.Asiakas_nro_2 )
WHERE Taulu1.Asiakas_nro_1 IN ( SELECT Asiakas_nro_2 FROM Taulu2 ) ;
Tässä siis päivitetään taulun yhtä kenttää normaalisti set-komennolla. Epätavallista kai on vain se, että päivitettävä arvo haetaan selectillä toisesta taulusta.
Oletin tuossa, että Taulu1 sisältää laajan asiakasrekisterin ja Taulu2 sisältää tapahtumia joillekin asiakkaille, eli Taulu2:n asiakkaat ovat Taulu1:n asiakkaiden osajoukko. Siksi tuossa on where-ehto, jossa haetaan Taulu2:ssa olevat asiakkaat, ja näitten asiakkaiden viimeistä ostosta päivitetään Taulu1:ssä.