Avatar billede sjh Nybegynder
04. december 2007 - 14:13 Der er 9 kommentarer og
1 løsning

REPLACE INTO vadi+1

Kan man ikke "opdater" en vadi på samme måde som med:

  UPDATE imdb_rating SET rating=rating+3, counts=counts+1 WHERE imdbid=12345;

bare med REPLACE INTO:

  REPLACE INTO imdb_rating (imdbid, rating, counts)
  VALUES (12345, rating=rating+3, counts=counts+1);

?
Avatar billede coderdk Praktikant
04. december 2007 - 23:42 #1
Yeah:

REPLACE INTO imdb_rating SET rating=rating+3, counts=counts+3 WHERE imdbid=12345;

Det kræver at du har defaultværdier på rating og counts, som så initielt vil blive defaultværdien + 3...
Avatar billede sjh Nybegynder
05. december 2007 - 02:55 #2
Okæææ.. det må jeg lige prøve når jeg har sovet et par. timer :D

Smider du lige et svar..
Avatar billede coderdk Praktikant
05. december 2007 - 09:33 #3
aight :)
Avatar billede sjh Nybegynder
05. december 2007 - 10:39 #4
hmm det virker ikke får fejl ved ... WHERE imdbid=12345;

har så prøvet sådan..
REPLACE INTO imdb_rating SET imdbid=12345, rating=rating+3, counts=counts+3;

men det virker bare som normal:
REPLACE INTO imdb_rating (imdbid, rating, counts) VALUES (12345, 3, 1);

:(
Avatar billede sjh Nybegynder
05. december 2007 - 10:43 #5
min table ser sådan ud :

CREATE TABLE `imdb_rating` (
  `imdbid` int(11) unsigned NOT NULL default '0',
  `rating` int(11) unsigned NOT NULL default '0',
  `counts` int(11) unsigned NOT NULL default '0',
  UNIQUE KEY `imdbid` (`imdbid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Avatar billede coderdk Praktikant
05. december 2007 - 10:54 #6
Æv, my bad:

"You cannot refer to values from the current row and use them in the new row. If you use an assignment such as SET col_name = col_name + 1, the reference to the column name on the right hand side is treated as DEFAULT(col_name), so the assignment is equivalent to SET col_name = DEFAULT(col_name) + 1."

Fra http://dev.mysql.com/doc/refman/5.0/en/replace.html

Så du er nødt til at lave to queries...
Avatar billede sjh Nybegynder
05. december 2007 - 11:34 #7
har nu prøvet med...

REPLACE INTO imdb_rating SET imdbid=12345, DEFAULT(rating)+3, DEFAULT(counts)+1;

Kun den her virker, men den tilføjer ikke +3 og +1
REPLACE INTO imdb_rating (imdbid, rating, counts)
  VALUES (12345, DEFAULT(rating)+3, DEFAULT(counts)+1);

:(
Avatar billede sjh Nybegynder
14. december 2007 - 16:35 #8
når jeg dropper det..

Tak for hjælpen
Avatar billede coderdk Praktikant
14. december 2007 - 17:33 #9
Hov, vil du ikke have dine point igen?
Avatar billede sjh Nybegynder
14. december 2007 - 17:38 #10
nej tak det er dine :D
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