webForumDet fria alternativet

Problem med SQL-fråga och temptabell

3 svar · 523 visningar · startad av spaceuser

spaceuserMedlem sedan aug. 20062 inlägg
#1

Hej!

Använder SQLServer 2000 på en Win 2003 server som jag vill ska skriva svaret i en tom tabell (korplan_temp1). Jag ställer följande fråga:

select * into korplan_temp1 from korplan inner join prodalternativ on (korplan.mfno = prodalternativ.tonr)
where (korplan.trans=1 and korplan.plgr='110' and korplan.infrakttid > DATEADD("dd", -8, getdate()))

Efter testkörning i SQL Query Analyzer får jag då följande felmeddelande:
Server: Msg 2705, Level 16, State 3, Line 1
Column names in each table must be unique. Column name 'ID' in table 'korplan_temp1' is specified more than once.

Tabellen korplan_temp1 är en identisk kopia av korplan. Jag har provat med att döpa om första tabellfältet till annat än ID, men ger ändå samma fel. Känner mig helt borta. Är därför väldigt tacksam i fall någon omedelbart ser vad för fel jag gjort. Tar jag bort "into korplan_temp1" i frågan ovan så erhåller jag ett svar på 85 poster, så data finns, men jag vill spara det i en temptabell för ytterligare frågor.

Tackar på förhand!

Lasse

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag skulle gissa på att det finns ett fält som heter ID både i korplan och prodalternativ. Du får helt enkelt räkna upp alla fältnamn i SELECT, och inte ha med båda ID-fälten (eller ge ett av dem ett nytt alias).

edit: eller om det bara är fält från korplan du vill ha, byt * mot korplan.* i SELECT.

- - - - -

Välkommen till webForum! :bire

Mvh

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Om du använder select into så skapas en ny tabell. I den tabellen ingår alla kolumner i selectlistan. Då du använder * får du med alla kolumner i både korplan och prodalternativ och felmeddelandet indikerar att det finns en kolumn som heter id i båda tabellerna. Generellt, använd aldrig * i ett produktionssystem utan specificera alltid de kolumner du vill ha.
Om du inte vill skapa en ny tabell så använd syntaxen

insert into korplan_temp1 select ...
spaceuserMedlem sedan aug. 20062 inlägg
#4

Det är strålande (y)

byt * mot korplan.* i SELECT

Nu funkar det precis som jag vill

STORT TACK!

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