Kolla om värde redan finns?

Databaser & SQL

5 svar · 266 visningar · startad av nybi

Medlem sedan nov. 200059 inlägg
Trådstart#1

Ex; på db som jag har.

+_id_|_name_|_value_+
|_1__|_ett__|_2_____|

Om jag nu vill stoppa in: ex;
mysql_query("INSERT INTO table (name, value) VALUES ('ett', '3')");

så kommer jag att få
+_id_|_name_|_value_+
|_1__|_ett__|_2_____|
|_2__|_ett__|_3_____|

MEN jag skulle istället vilja ha resultatet:
+_id_|_name_|_value_+
|_1__|_ett__|_5_____|

Alltså att den kollar om 'name' redan finns, om den gör det så plussar den bara på 'value' till det 'name' som redan finns.

Hoppas att ni har förstått ;)

Det blir väl kanske lite php kodande men jag la det här i mysql iaf.

Medlem sedan apr. 2000642 inlägg
#2

har för mig att du kan skriva nått i stil med:

UPDATE TABLE tabell SET varde = varde +2 WHERE namn LIKE 'namn'

eller nått... :)

Medlem sedan aug. 2000238 inlägg
#3

[r]ajda, fel tråd. denna post får mer än gärna plockas bort[/r]

[Redigerat av herq den 16 mar 2001]

Medlem sedan dec. 19991 749 inlägg
#4

Annars så kan du använda dig av REPLACE. Den uppdaterar om posten redan finns och lägger till om den inte finns.

Medlem sedan dec. 200012 464 inlägg
#5

Så här ungefär

  $result = mysql_query("select 1 from tabell where name = '$name') or die(mysql_error('Issiken');
  if  ( mysql_numrows($result) > 0 ) {
      mysql_query("update tabell set val = val + $val where name = '$name') or die('Dissiken');
  } else {
      mysql_query("insert into tabell values('$name',$val) or die ('Dunkan dej');
  }
Medlem sedan dec. 200012 464 inlägg
#6

Replace har man väl inte så stor nytta av då man inte kan komma åt de värden som fanns där innan. Dvs man måste plocka upp dessa innan man gör replace.

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)