Avatar billede gregorian Nybegynder
09. september 2004 - 20:21 Der er 10 kommentarer og
1 løsning

træk en fra i flere felter i min db. Hvordan gøres det lettest?

for at give et eksempel:
Skal updatere 5 felter i min database
hvor det med billede_id = 2 skal sættes lige 7
og alle dem med billede_id 3,4,5,6,7 skal der trækkes en fra.

Kan dette gøres via en query eller skal jeg først trække infomationen ud af min db og derpå sætte det ind igen ?

Hvis ja: hvordan gøres det lettest?

min query til billede_id = 2
mysql_query("UPDATE BK_billeder SET billede_id = '7' WHERE billede_id = '2' && billedeserie_id = 18 LIMIT 1");
Avatar billede arne_v Ekspert
09. september 2004 - 20:52 #1
Vel noget a la:

UPDATE BK_billeder SET billede_id = 777777 WHERE billede_id = 2
UPDATE BK_billeder SET billede_id = billed_id - 1 WHERE billede_id IN (3,4,5,6,7)
UPDATE BK_billeder SET billede_id = 7 WHERE billede_id = 777777
Avatar billede eagleeye Praktikant
09. september 2004 - 20:53 #2
Du kan lave det i updaten:  kolonnenavn=kolonnenvan-1

Så den kan skrives som:

mysql_query("UPDATE BK_billeder SET kolonnenavn=kolonnenvan-1 WHERE billede_id = '3' or billede_id = '4' or billede_id = '5' or billede_id = '6' or billede_id = '7'");
Avatar billede arne_v Ekspert
09. september 2004 - 20:53 #3
Jeg forudsætter at billed_id er et tal felt og ikke et tekst felt som du
ellers antydede i spørgsmålet
Avatar billede gregorian Nybegynder
09. september 2004 - 20:56 #4
Jep det er et talfelt

eagleeye:
mysql_query("UPDATE BK_billeder SET kolonnenavn=kolonnenvan-1 WHERE billede_id = '3' or billede_id = '4' or billede_id = '5' or billede_id = '6' or billede_id = '7'");

når du bruger or i update sætningen retter den i alle sammen eller stopper den når den har udført den første?

grunden til at jeg skal updatere 5 felter er at jeg har en start værdi og slutværdi som kan være alle tal.
alle de tal indenfor start og slutværdien skal der trækkes en fra.

så umiddelbart kan jeg nok godt bruge dine eagleeye, men skal lige være sikker på det med "or"
Avatar billede eagleeye Praktikant
09. september 2004 - 21:15 #5
Den retter dem alle. Men det kan skrives kortere som arne_v har vist med IN som også opdater alle i listen:
WHERE billede_id IN (3,4,5,6,7)
Avatar billede gregorian Nybegynder
09. september 2004 - 21:17 #6
Det havde jeg helt overset.. troede bare det var almindelige update sætninger ud noget andet.. ;)

jamen så har jeg jo et svar.. tester lige
Avatar billede gregorian Nybegynder
10. september 2004 - 17:15 #7
Jeg siger tak..
da arne v kom først med svar så må jeg jo give ham pointene, selvom det var eagleeye der fik mig til at se hvad der egentlig stod ;) hehe


Smider du lige svar arne?
Avatar billede arne_v Ekspert
10. september 2004 - 21:40 #8
svar
Avatar billede arne_v Ekspert
19. september 2004 - 19:00 #9
Så mangler du bare lige at acceptere svaret ...
Avatar billede gregorian Nybegynder
19. september 2004 - 19:09 #10
troede jeg at jeg havde gjort :/
hmm. gør det lige igen så
Avatar billede arne_v Ekspert
19. september 2004 - 19:13 #11
I forbindelse med den nye version som kom i år, så hvis man glemmer at markere
navnet så det er blåt inden man klikker accepter, så sker der ingenting.

Det driller rigtigt mange.
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