Join ja Update

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
1469
Äänestä

Muut lukivat myös

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ä.

Äänestä

Kommentoi aloitusta


Jackrabt kirjoitti:

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

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu