19. november 2009 - 15:39Der er
10 kommentarer og 1 løsning
SQL Stored Procedures hjælp
Jeg skal have kopieret nogle dele af data fra en tabel i SQL over i en anden SQL tabel, hvor den bare skal tage hvad der evt. står i de 8 felter i den ene tabel og kopiere dem over i den anden tabel og smide data i de felter jeg peger på. Er der nogen som kan hjælpe med sådan et stykke SQL kode ?
Selve den transaktion du beskriver kan klares med en temmelig enkel query. Den kan man saa putte i en stored procedure eller koere direkte som man her lyst.
Jeg lavede en tabel rew1 med det foelgende indhold:
rew, jeg sidder med det problem at nogle af de indlaeg der kommer til de spoergsmaal jeg deltager i bliver ikke vist. Jeg kan se fra oversigten at der er kommet 5 indlaeg til dette spoergsmaal, det sidste kl 14.54, men jeg kan kun se det ene indlaeg jeg selv har lavet. Kunne jeg bede dig om at gensende resten?
rew, det er ok, da jeg sendte ovenstaaende blev de andre indlaeg pludselig synlige.
Jeg antog fra det oprindelige spoergsmaal at det var et antal raekker i den gamle tabel der i deres helhed skulle overfoeres. I saafald virker min kode i min version af mysql (jeg har afproevet den.) Der er ingen grund til at angive hvilke kolonner der skal kopieres hvis de alle skal.
Hvis det kun er visse kolonner der skal kopieres saa forandrer det sagen. Jeg skal udbygge og teste kode for det, men det vil vare lidt fordi jeg nu skal vaek.
Koden der er noedvendig afhaenger naturligvis af hvad man vil.
I alle tilfaelde har jeg fundet ud af at sub-selecten i dette tilfaelde ikke behoever at staa i parantes (tak arne_v).
Saa "case-1:" Det simpleste tilfaelde - den gamle og den nye tabel har de samme kolonner og man vil kopiere alle kolonner. Saa bliver det
INSERT INTO nytab SELECT * FROM gtabel. (Hvis man kun vil kopiere visse raekker tilfoeres, for eksempel, WHERE felt1 IN ('felt11', 'felt13' )
"case-2" Man vil kopiere, lad os sige, fem af kolonnerne i fra den gamle tabel til en ny tabel og den nye tabel faar disse fem kolonner. Saa bliver det
INSERT INTO rew3 SELECT felt1, felt2, felt3, felt5, felt7 FROM rew1.
"case-3" Man har en gammel tabel med 8 kolonner. Fem af disse kolonner skal kopieres til en ny tabel der indeholder mere end fem kolonner. Saa bliver koden
INSERT INTO rew2(felt1, felt2, felt4, felt5, felt8) SELECT felt2, felt3, felt6, felt7, felt8 FROM rew1
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.