Avatar billede simsen Mester
08. juli 2012 - 21:24 Der er 8 kommentarer og
1 løsning

Loope gennem tabel og opdatere et felt

Hej,

Jeg er sådan set drevet til vanvid, og har brugt flere timer nu på det her simple ting. Jeg har brug for at loope igennem en tabel, og opdatere et felt med +1 - altså række 1 skal have 1 række 2 skal have 2 i feltet.

Min tabel kaldes ResourceText og feltet der skal opdateres hedder resourceTextId. Lige nu er feltet NULL alle steder. Felter der ellers er i tabellen er resourceControlId, languageId, textValue. resourceControlId og languageId tilsammen er en uniq ting. Altså 501 og 1 i en række er uniq og 501 og 20 er også uniq.

Som den kloge læser nok har fattet, er at jeg før har brugt resourceControl og languageId som en sammensat nøgle. Det kan jeg ikke mere af andre årsager, så jeg har måttet indsætte en ny nøgle. Og nu er jeg sådan set temmelig magelig anlagt og orker ikke gå igennem samtlige 3000 rækker og opdatere manuelt.

En af de forsøg, jeg har prøvet med er følgende:

Declare @count Int
Declare @LoopCount Int
Declare @identityField Int
Declare @fieldToUpdate Int
Declare @t_identityField Int
Declare @t_fieldToUpdate Int

select resourceControlId,resourceTextId
into #temp
from ResourceText
/*where constraints_if_necessary*/

select Identity(int,1,1) id, convert(int, resourceControlId) as identityField, resourceTextId
into #temp2
from #temp

set @count = @@rowcount
set @LoopCount = 1

while @LoopCount <= @count
begin
select @t_identityField = identityField,@t_fieldToUpdate = resourceTextId
from #temp2
where id = @LoopCount

set @LoopCount = @LoopCount + 1

update ResourceText
set resourceTextId = @t_fieldToUpdate
where resourceControlId = @t_identityField
end

Håber nogen kan hjælpe mig :-)

mvh
simsen :-)
Avatar billede Slettet bruger
08. juli 2012 - 21:51 #1
Du kan tilføje en ny kolonne med primær nøgle til en tabel på denne måde:

alter table ResourceText
add resourceTextId int identity(1,1)
Avatar billede simsen Mester
08. juli 2012 - 22:05 #2
Rigtig mange tak - kan godt se jeg har været ude i noget, jeg slet ikke behøvede.

Smid et svar og du får dine points :-)
Avatar billede Slettet bruger
08. juli 2012 - 22:19 #3
Ellers tak, jeg samler ikke. :)
Avatar billede Syska Mester
08. juli 2012 - 22:26 #4
Er det ikke nemmere bare at smide et svar i stedet for at sige man ikke samler? Sigh ...
Avatar billede Slettet bruger
08. juli 2012 - 22:51 #5
Helt sikkert, men når jeg nu ikke gider det point-ræs og der ikke findes nogle nemme måder at gøre opmærksom på det, så må alternativet være at jeg skriver det, så tråden i det mindste kan blive lukket. :)
Avatar billede Syska Mester
09. juli 2012 - 09:00 #6
Så er det vel bare at lade være med at kigge på point, men bare svare på spørgsmålet ... og så smide et svar.

Men det er jo selvf noget vi alle ikke er ens. :-)
Avatar billede janus_007 Nybegynder
09. juli 2012 - 18:52 #7
Jeg giver buzzzz ret, det er da noget værre fis at du skriver sådan.

Det er en del af Eksperten at man giver point, men at du opfatter det som som et ræs er da helt din egen opfattelse.
Avatar billede Slettet bruger
09. juli 2012 - 20:30 #8
Nu var det heller ikke meningen at træde nogle over tæerne. Beklager jeg kaldte det point-ræs. Pointene betyder bare ikke noget for mig, men da det lader til at være et problem for nogle, lægger jeg et svar. Spørgeren er selvfølgelig velkommen til selv at tage pointene.
Avatar billede simsen Mester
10. juli 2012 - 12:43 #9
Jeg ser mere pointsene som en måde at vise min taknemlighed for at nogle gider hjælpe mig. Så endnu engang tak for hjælpen tolamaps :-)

Janus
Du mangler at lægge et svar her:
http://www.eksperten.dk/spm/965624 :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester