Avatar billede gtu Nybegynder
10. april 2013 - 22:35 Der er 5 kommentarer og
1 løsning

select og update i samme query

Jeg prøver at lave select og update i samme query, men det er vist ikke tilladt.. har google lidt og man skal vist lave in join.. men har ikke noget at join på..

det jeg prøver at opnå er:

2 tabeller..

Priser:
id - vare - pris


Bruger:
id - navn - beloeb

jeg vil gerne tage prisen på en vare og trække den fra en brugers beloeb og lave en update..
phpmyadmin melder fejl, så det jeg har gjort du er jeg har løst det med 3 querys.

først select varens pris, så beløb.. så minus jeg med php og lave en update..

vil gerne lave det med en query, så hvis brugeren har 2 sessioner at 2. sessioner ikke rammer mellem de 3 query, og så giver et forkert tal..

Men der er ik noget jeg kan join på?

f.eks hvis jeg gerne vil tage vare id nr 3 og trække prisen fra bruger id 1's beloeb
Avatar billede gtu Nybegynder
10. april 2013 - 22:36 #1
det er MY sql, ikke ms.. kom til at vælge forkert forum
Avatar billede arne_v Ekspert
11. april 2013 - 01:15 #2
Du kan se om den accepterer:

UPDATE bruger SET beloeb = beloeb - (SELECT pris FROM vare WHERE id = ?) WHERE id = ?
Avatar billede arne_v Ekspert
11. april 2013 - 01:15 #3
Ellers laver du en SELECT og en UPDATE men putter dem i en enkelt transaktion.
Avatar billede gtu Nybegynder
11. april 2013 - 08:35 #4
smukt. laver du lige et svar.

et tillægs spg hvis det er ok

Kan det betale sig at tilføje en limit 1? ved godt det ikke kan betale sig når where er en primarykey/unik..

men hvad hvis det bare var for den første vare kaldt "iPhone 4" og jeg ved der kun er en "iphone 4".. måske et dårligt eksemple, men bare for at lige at forstå limit 1 konceptet.

UPDATE bruger SET beloeb = beloeb - (SELECT pris FROM vare WHERE vare= 'iPhone 4' LIMIT 1) WHERE id = ?
Avatar billede arne_v Ekspert
11. april 2013 - 14:59 #5
svar
Avatar billede arne_v Ekspert
11. april 2013 - 14:59 #6
Hvis der er index paa vare, saa tror jeg ikke at det goer nogen forskel.

Hvis der ikke er index, saa maaske.
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