Avatar billede lsskaarup Nybegynder
10. marts 2010 - 16:29 Der er 8 kommentarer og
1 løsning

UPDATE hvor værdi skal lægges sammen ud fra SELECT

Følgende virker ikke, men er det muligt, men lidt ændringer?

UPDATE projektmedlemmer SET procent = '(20 + SELECT procent FROM projektmedlemmer WHERE ansvarlig = '1' and tilbudID = '37027')' WHERE tilbudID = '37027'

Værdien 20, er en variable der kommer fra php.
Avatar billede arne_v Ekspert
10. marts 2010 - 16:34 #1
UPDATE projektmedlemmer SET procent = (SELECT 20+procent FROM projektmedlemmer WHERE ansvarlig = 1 and tilbudID = 37027) WHERE tilbudID = 37027

boer virke med en nyere MySQL
Avatar billede michael_stim Ekspert
10. marts 2010 - 16:35 #2
UPDATE projektmedlemmer SET procent = procent + 20 WHERE tilbudID = '37027' AND ansvarlig = '1'

Er ikke testet, men tror den fungerer.
Avatar billede michael_stim Ekspert
10. marts 2010 - 16:35 #3
OK, har arne_v ikke lavet den lige så enkel, fungerer den nok ikke ;o)
Avatar billede arne_v Ekspert
10. marts 2010 - 16:41 #4
Jeg sidder bare og smaasover uden at taenke saa meget over det, saa du skal ikke forvente for meget fra min side.

De 2 SQL er dog ikke helt ens. Saa vidt jeg kan se vil de opdatere et forskelligt antal raekker, hvis der er flere raekker med samme tilbudsid og forskellig ansvarlig.
Avatar billede lsskaarup Nybegynder
10. marts 2010 - 16:44 #5
Jeg kan så se, jeg glemte at få en betingelse mere med i UPDATE'n, så den kun gør det ved den ansvarlige...

UPDATE projektmedlemmer SET procent = '(20 + SELECT procent FROM projektmedlemmer WHERE ansvarlig = '1' and tilbudID = '37027')' WHERE tilbudID = '37027' AND ansvarlig = '1'

Desværre er MySQL nok ikke ny nok, til at arne_v's løsning virker ikke. Der får jeg følgende fejl.

#1093 - You can't specify target table 'projektmedlemmer' for update in FROM clause

Min din, michael_stim virkede, så den skal se sådanne ud:

UPDATE projektmedlemmer SET procent = (SELECT 10+procent) WHERE tilbudID = 37027 AND ansvarlig = '1'

og testede lige for om jeg skulle have SELECT foran 10, men det er ikke nødvendigt.
Avatar billede arne_v Ekspert
11. marts 2010 - 01:26 #6
He. Så var det jo lige præcis Michaels funktionalitet du skulle bruge.
Avatar billede lsskaarup Nybegynder
11. marts 2010 - 10:46 #7
Nemlig, så Michael tro mere på dig selv næste gang... ;-)

Smider du også lige et svar
Avatar billede michael_stim Ekspert
11. marts 2010 - 12:06 #8
Men skriver jeg noget og "guruen" skriver noget andet, har jeg en tendens til at tro på Arnes forslag. Og jeg har desværre nok ret i 90% af tilfældende ;o)

Samler ikke på point, ellers tak.
Avatar billede lsskaarup Nybegynder
11. marts 2010 - 15:25 #9
He he, det kan du have ret i, men nu gjorde jeg det jo heller ikke lige frem nemmere for "guruen", ved ikke at oplysning hvilken version af MySQL jeg kører. Så jeg kan da ikke afvise, at hans forslag ikke også virker, bare ikke på min løsning.

Men tak for hjælpen.
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