Avatar billede prince10 Nybegynder
16. december 2004 - 13:42 Der er 4 kommentarer og
1 løsning

Append query

Jeg har en tabel med projektindhold.
Hvordan kan jeg kopiere bestemte rækker til samme tabel, og samtidig ændre værdien i en enkelt række ex:

INSERT INTO dbo.tbl_Project_Content
          (componentID, Category, Quantity, ProjectID)
SELECT    componentID, Category, Quantity, ProjectID
FROM      dbo.tbl_Project_Content
WHERE    (ProjectID = 49)

Den kopierer korrekt rækker hvor projectid=49
Jeg vil imidlertid gerne have ændret projectid på de rækker der indsættes til en anden værdi  Kan det lade sig gøre.
Skal jeg evt. vej af en temp tabel, som opdateres og indsættes.

er det til at forstå hvad jeg mener...?
Hilsen Prince10
Avatar billede arne_v Ekspert
16. december 2004 - 13:45 #1
Du kan godt f.eks.:

INSERT INTO dbo.tbl_Project_Content
          (componentID, Category, Quantity, ProjectID)
SELECT    2*componentID+1, Category, Quantity, ProjectID
FROM      dbo.tbl_Project_Content
WHERE    (ProjectID = 49)

men hvis beregningen når over en vis kompleksitet, så er SQL nok ikke det rette
sprog, så bør du lave beregningen i din applikation (ASP/C#/VB/whatever) altså
med en SELECT, beregning i koden og mange simple INSERT.
Avatar billede erikjacobsen Ekspert
16. december 2004 - 13:47 #2
Eller bare, hvis det er en fast værdi

SELECT    7913, Category, Quantity, ProjectID
Avatar billede prince10 Nybegynder
16. december 2004 - 14:05 #3
Den her virker:
INSERT INTO dbo.tbl_Project_Content
                      (componentID, Category, Quantity, ProjectID)
SELECT    componentID, Category, Quantity, 55 AS ProjectID
FROM        dbo.tbl_Project_Content
WHERE    (ProjectID = 49)
Kan den lades om til en StoredProc, således at jeg har 55 og 49 indsættes via variabler - Det er til en .net applikation på en sql-server.
Hilsen prince10
Avatar billede erikjacobsen Ekspert
16. december 2004 - 14:12 #4
Og du behøver nok kun

SELECT    componentID, Category, Quantity, 55

(ikke at det gør nogen væsentlig forskel ...)
Avatar billede prince10 Nybegynder
16. december 2004 - 14:12 #5
Åbenbart sådan her...
CREATE PROCEDURE [dbo].[AppendProjContent]
@NEWProjektID int,
@OLDProjektID int
AS
INSERT INTO dbo.tbl_Project_Content
                      (componentID, Category, Quantity, ProjectID)
SELECT    componentID, Category, Quantity, @NEWProjektID AS projectid
FROM        dbo.tbl_Project_Content
WHERE    (ProjectID = @OLDProjektID)
GO

prince10
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