webForumDet fria alternativet

uppdatera fält i MSsql

7 svar · 435 visningar · startad av laidback

laidbackMedlem sedan maj 2001797 inlägg
#1

Med risk för att vara totalt snurrig, men det går ärligt talat runt i huvudet just nu...

Har en tabell innehållandes en massa forumposter. Saknar en viktig bit, nämligen postarens ID, har bara ett fält för namnet (ja, jag var hjärndöd när jag designade databasen :bla ).
Har lagt till ett fält där medlemsid't ska in, tänkte att det kanske kunde hämtas från en annan tabell som innehåller medlemmarnas namn och ID.

tabell 1 inläggen
messagesUserID (tom)
messagesUsername (ej tom)

tabell 2 medlemmarna
memberID (ej tom)
memberUsername (ej tom)

messagesUsername och memberUsername är alltså den gemensamma nämnaren, nu vill jag göra någon sorts automatisk query som hämtar id't från tabell 2 för varje post, några idéer?
Går det öht?

Kanske ska nämna att jag sitter med SQL Server Enterprise Manager :OO
Om jag högerklickar på tabellen, All tasks -> Import Data, så kan jag skriva en query, men det blir inte rätt. Hilfe, bitte?

Gjorde även ett försök med en asp-sida med ett vb-script men där nån stans hängde sig webbservern så jag gav upp den taktiken :l (för stunden iaf)

LarsGMedlem sedan dec. 200012 464 inlägg
#2
update inlaggen 
set messageUserId = (select memberId
from medlemmar 
where memberUsername = inlaggen.messageUserName)

flyttas från databashanterare

laidbackMedlem sedan maj 2001797 inlägg
#3

Tack, LarsG! (Både för hjälpen och för flytten :r )

Ska testa det när jag kommer hem :)

laidbackMedlem sedan maj 2001797 inlägg
#4

Hm, får felet "Invalid pointer", några teorier om vad det beror på?

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Var när hur får du felet?

laidbackMedlem sedan maj 2001797 inlägg
#6

Använder ovanstående (något modifierad för att passa med tabellnamn osv) som en query för att importera data till tabellen med inläggen i SQL server enterprise manager.
"the query is valid" säger den, men något är uppenbarligen fel.

Nån på ett sql-forum har haft samma problem :
"It turns out that DTS packages do not like messages. Make sure you have Set NOCOUNT ON and SET ANSI_WARNINGS OFF."

Vad nu det betyder?!

LarsGMedlem sedan dec. 200012 464 inlägg
#7

det betyder att man skickar

Set NOCOUNT ON 
SET ANSI_WARNINGS OFF
update inlaggen 
set messageUserId = (select memberId
from medlemmar 
where memberUsername = inlaggen.messageUserName)

som en fråga. När det gäller DTS så vet jag väl ungefär vad namnet betyder men inte mer.

laidbackMedlem sedan maj 2001797 inlägg
#8

Whaaa! Det funkade :)
Skippade enterpise managern och gjorde det i en asp-sida i stället, funkade klockrent :birp

:f på dig ;)

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)