Avatar billede dm0108 Nybegynder
23. marts 2005 - 14:24 Der er 2 kommentarer og
2 løsninger

MS SQL vil ikke genkende et kolonne navn

Jeg skal opdatere nogle kolonnner i en tabel med data fra en anden tabel i databasen.
Kommandoen ser sådan ud
use metadbraastof
update metadb.me_dokumenter set titel='kolofon.emne', prod_dato='kolofon.rapport_dato', rekvirent = 'kolofon.rekvirent' where dok_id = kolofon.ID

Tabellen som dataene skal i hedder me_dokumenter og den tabel hedder kolofon.
Den vil gerne genkende kolofon sålænge der er tale om en nvarchar men da where klausulen indeholder en int kommer den med denne fejlmeddelse:

Server: Msg 107, Level 16, State 3, Line 1
The column prefix 'kolofon' does not match with a table name or alias name used in the query.

hvordan kan jeg få det ændret så den vil læse de her ting.
Avatar billede dsj Nybegynder
23. marts 2005 - 14:28 #1
I MS SQL kan du ikke bruge '...' omkring tabel og kolonne navne, men skal bruge [...] i stedet:

update metadb.me_dokumenter set titel=[kolofon.emne], prod_dato=[kolofon.rapport_dato], rekvirent = [kolofon.rekvirent] where dok_id = kolofon.ID

Dog er det ikke nødvendigt at bruge [...] i ovenstående statement.
Avatar billede dsj Nybegynder
23. marts 2005 - 14:32 #2
Og lige en rettelse. Dit statement skal se således ud, hvis du vil bruge klammer:

update metadb.me_dokumenter set titel=[kolofon].[emne], prod_dato=[kolofon].[rapport_dato], rekvirent = [kolofon].[rekvirent] where dok_id = kolofon.ID

Det er dog kun nødvendigt at bruge klammer, hvis en tabels eller kolonnes navn består af reserverede ord, eller er sammensat af flere ord, som f.eks.:

[user].id - 'user' er et reserveret ord
customer.[customer id] - kolonnen 'customer id' er sammensat af flere ord
Avatar billede dm0108 Nybegynder
23. marts 2005 - 15:10 #3
Jeg har prøvet med følgende løsning:

use metadbraastof
update metadb.me_dokumenter set titel=kolofon.emne, prod_dato=kolofon.rapport_dato, rekvirent = kolofon.rekvirent where dok_id = kolofon.ID

Det giver følgende resultat.
Server: Msg 107, Level 16, State 3, Line 1
The column prefix 'kolofon' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 'kolofon' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 'kolofon' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 'kolofon' does not match with a table name or alias name used in the query.

jeg forstår det ikke.
Avatar billede dsj Nybegynder
23. marts 2005 - 15:18 #4
Du skal have tabellen kolofon med i statementet, prøv med:

update metadb.me_dokumenter set titel=kolofon.emne, prod_dato=kolofon.rapport_dato, rekvirent = kolofon.rekvirent from kolofon where dok_id = kolofon.ID

I øvrigt kan du læse mere om updates her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_2y2h.asp
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