Avatar billede hojgaard Nybegynder
19. marts 2003 - 19:04 Der er 7 kommentarer og
2 løsninger

Resultatet fra 2 SELECT over i en INSERT?

Hej,

Jeg ved ikke om det overhovedet er muligt at stille spørgsmålet sådan her, men jeg prøver.

Jeg har prøvet vha. 3 simple statements at vise hvad jeg gerne vil have:

SELECT id AS x FROM [hh].[employee] WHERE employeeno='23-412-160';
SELECT id AS y FROM [hh].[course] WHERE oldcoursename='DK-5-001' AND

fromdate='20020410';

INSERT INTO [hh].[employeecourse] (eid, cid) VALUES ('x', 'y');


Håber det giver bare lidt mening ;o)
Avatar billede cbp Nybegynder
19. marts 2003 - 20:25 #1
Hvis det er i en stored procedure kan du gøre det på følgende måde:

Declare @x int, @y int

SELECT @x = id
FROM [hh].[employee]
WHERE employeeno='23-412-160'

SELECT @y = id
FROM [hh].[course]
WHERE oldcoursename='DK-5-001' AND fromdate='20020410'

INSERT INTO [hh].[employeecourse]
(eid, cid) VALUES
(@x, @y)

Hvis det skal være en enkelt SQL-sætning er det noget mere kompliceret men jeg tror godt at det kan lade sig gøre.
Avatar billede janus_007 Nybegynder
19. marts 2003 - 20:44 #2
Er der ingen reletioner imellem tabellerne ?
Avatar billede hojgaard Nybegynder
19. marts 2003 - 21:30 #3
Det er ikke en stored procedure, og der er ikke nogen relationer mellem tabellerne. Det er det tabellen employeecourse skal stå for. Lige nu er jeg ved at konvertere data fra et gammel system...
Avatar billede mortrr Praktikant
19. marts 2003 - 21:42 #4
Du burde da direkte kunne bruge
INSERT INTO Employeecourse (eid,cid) select x,y from employee, course where employee.employeeno='23-412-160' AND course.oldcoursename='DK-5-001' AND course.fromdate='20020410';
Avatar billede janus_007 Nybegynder
19. marts 2003 - 22:28 #5
INSERT INTO [hh].[employeecourse] (eid, cid)
(SELECT id AS x FROM [hh].[employee] WHERE employeeno='23-412-160';
, SELECT id AS y FROM [hh].[course] WHERE oldcoursename='DK-5-001' AND fromdate='20020410';
)

Enten med eller uden parenteser, det kan jeg ikke lige overskue :O)
Avatar billede mortrr Praktikant
19. marts 2003 - 22:33 #6
janus_007 - >
Med et par ekstra paranteser og en VALUES så går den nok.
Avatar billede janus_007 Nybegynder
20. marts 2003 - 09:03 #7
mortrr--> Ingen grund til at være så smart... En insert into med select foregår altid uden VALUES !

Læs på din SQL inden du sidder og er kæk.
Avatar billede hojgaard Nybegynder
20. marts 2003 - 09:25 #8
janus_007: din løsning kunne jeg ikke få lov til at køre.

mortrr: din løsning virkede :-) Jeg kan bare ikke give dig point fordi du har lagt dit svar ind som en kommentar. Kan du ikke lægge et svar ind?
Avatar billede mortrr Praktikant
20. marts 2003 - 10:30 #9
OK.

janus_007 - ja det var noget sludder. SELECT selvfølgelig

INSERT INTO [hh].[employeecourse] (eid, cid) SELECT
(SELECT id AS x FROM [hh].[employee] WHERE employeeno='23-412-160'
, SELECT id AS y FROM [hh].[course] WHERE oldcoursename='DK-5-001' AND fromdate='20020410')

men kun hvis hver at de to selects returnerer max 1 værdi
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