08. juli 2012 - 21:24Der 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
Er det ikke nemmere bare at smide et svar i stedet for at sige man ikke samler? Sigh ...
Synes godt om
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. :)
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.
Synes godt om
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.
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.