Avatar billede repsak Nybegynder
13. oktober 2003 - 15:50 Der er 11 kommentarer og
1 løsning

Insert + select

Jeg skal have bakset noget sql sammen:
INSERT INTO a VALUES(v1, v2, v3);
men værdien v3 kender jeg ikke før at jeg har evelueret et SELECT statement.
Hvordan kommer det til at se ud?

noget ala:
INSERT INTO a VALUES(v1, v2, SELECT(.....));
Avatar billede cborg Nybegynder
13. oktober 2003 - 15:53 #1
INSERT INTO tableName(kolonneNavn1, kolonneNavn2)
VALUES(1, (SELECT value FROM table.kolonne WHERE someValue = someOtherValue));
Avatar billede ldanielsen Nybegynder
13. oktober 2003 - 15:54 #2
I MSSQL:

INSERT INTO a (v1, v2, v3) SELECT 'Davs', 'Du', Max(Dato) FROM b where ditten = datten

Eller sådan noget. Denne kan jo fint inserte MANGE linier i et hug, så kør selecten isoleret først, for at checkke at det er det rigtige der kommer ind

Men jeg ved ikke om MySQL kan det
Avatar billede cborg Nybegynder
13. oktober 2003 - 15:54 #3
Du kan også gemme din værdi fra dit select statement i en variabel først, og bare specificere variabel navnet som den værdi du vil indsætte.
Avatar billede cborg Nybegynder
13. oktober 2003 - 15:54 #4
svar
Avatar billede arne_v Ekspert
13. oktober 2003 - 15:55 #5
MySQL kan så vidt jeg ved ikke den slags.

2 SQL sætninger i 1 transaktion.
Avatar billede repsak Nybegynder
13. oktober 2003 - 15:57 #6
INSERT INTO reflectionText (author, reflection, refId) VALUES ('vs', 'HUND', (SELECT id FROM reflection WHERE objectiveId = 2));

det giver fejl...?
Avatar billede repsak Nybegynder
13. oktober 2003 - 17:51 #7
hmm hvad gør man så...?
Avatar billede arne_v Ekspert
13. oktober 2003 - 17:55 #8
2 SQL sætninger i 1 transaktion
Avatar billede repsak Nybegynder
13. oktober 2003 - 18:04 #9
sikkert simpelt, men den skal nok skæres lidt mere ud i pap ;-)
Avatar billede arne_v Ekspert
13. oktober 2003 - 18:07 #10
start transaktion
udfør select
hent værdier
udfør update med hentede værdier
commit transaktion

[hvis du ikke har potentielle samtidigheds problemer, så behøver
du ikke transaktion]

[husk at transaktioner i MySQL kræver InnoDB - MyISAM duer ikke]
Avatar billede repsak Nybegynder
13. oktober 2003 - 18:14 #11
cborg -> var også min idé
ldanielsen -> den går tilsyneladende ikke i MySQL
arne_v -> takker - jeg prøver (vender tilbage imorgen da jeg ikke har adgang til aktuelle comp nu)
Avatar billede repsak Nybegynder
14. oktober 2003 - 13:33 #12
fino, håbede nu at man kunne gøre som cborg og ldanielsen, men det andet virner nu også :-)
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