webForumDet fria alternativet

uppdatera fält i MSsql

Databaser & SQL

7 svar · 437 visningar · startad av laidback

Medlem sedan maj 2001797 inlägg
Frågan#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)

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

flyttas från databashanterare

Medlem 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 :)

Medlem sedan maj 2001797 inlägg
#4

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

Medlem sedan dec. 200012 464 inlägg
#5

Var när hur får du felet?

Medlem 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?!

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

Medlem 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 ;)

297 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
162 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
163 ms — ändringar (db)