Avatar billede palito Nybegynder
06. juni 2007 - 21:18 Der er 13 kommentarer

Overskriv række hvis den næsten matcher

Jeg har en karmasystem som eksperten, hvor jeg indsætter et giver-id og et modtager-id. Derudover indsætter jeg en 'ranking'.

Hvordan kan jeg overskrive den ranking hvis de givne id'er allerede eksisterer.

- Præcis ligesom på eksperten
Avatar billede yHec Novice
06. juni 2007 - 21:22 #1
Jeg formoder du bruger en db-løsning....
"update [tabel] set ranking=[ny-ranking] where bruger_id=[bruger]"

Sådan ville jeg gøre det.

Post evt flere detaljer.

/y
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:23 #2
Huh? Hvad mener du?

Eksperten erstatter ikke noget der "næsten matcher".. Den bruger garanteret et *bestemt* id, afhængigt af brugeren..

Og hvad mener du med "hvis de givne id'er allerede eksisterer"?
Avatar billede palito Nybegynder
06. juni 2007 - 21:23 #3
så jeg SKAL lave et tjek på om den eksisterer for herefter at lave en insert/update? Jeg skulle bare høre om der var en smartere måde at gøre det på. ellers tak! læg et svar
Avatar billede palito Nybegynder
06. juni 2007 - 21:25 #4
thesurfer - hvis der eksisterer en række hvor id1 og id2 er de samme som den række jeg er ved at indsætte.

jeg skrev "næsten matcher" fordi de ikke er 100% identiske, men at ratingen var anderledes.
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:28 #5
Du kan gøre det på flere måder.. her er 2:

1) Gem kun den actuelle værdi, dvs, kun 1 felt per bruger:
Hvis karmaen IKKE eksisterer
  INSERT ny karma
Ellers
  UPDATE karmaen med en ny værdi
Slut hvis

2) Indsæt en ny post, og evt opdatere en bestemt post ud af mange
Hvis karmaen IKKE eksisterer
  INSERT ny karma, sammen med id på brugeren der opretter karmaen
Ellers
  Update karmaen med en ny værdi, hvor opretter-id = nuværende opretter-id
Slut hvis
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:32 #6
Hvis nogen undrer sig over, hvad jeg mener, vil jeg prøve på at forklare det..

Forskellen ligger i

- om man henter en allerede udregnet værdi ud

- om man gemmer flere poster, og regner værdien (procenten) ud, når/efter man henter dataene ud af databasen,


Hvis man bruger nr 1, skal man også vide hvor mange gange en bruger har fået karma, så man kan regne ud, hvilken værdi/procent der skal opdateres med..

Hvis man bruger nr 2, skal man hente alle poster, hvor vedkommende har fået en karma, så man kan finde samlet karma-værdi OG antallet af karma-givninger, så man kan dividere op og vise det i procent..
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:34 #7
PS:
- med nr 1 kan man typisk ikke se *hvem* der har givet personen karma
- med nr 2 kan man aflæse opretter-id, og se hvem der har giver personen karma
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:39 #8
Eksempel med nr 1:

navn: jens
karma: 100
antal: 4


Jens's gennemsnitskarma er: 100 / 4 = 25%


Eksempel med nr 2:

navn: jens
karma: 25
givet af: mogens

navn: jens
karma: 50
givet af: henrik

navn: jens
karma: 0
givet af: ole

navn: jens
karma: 25
givet af: hans


Jens's gennemsnitskarma er: (25 + 50 + 0 +25) / 4 = 100 / 4 = 25%
Avatar billede coderdk Praktikant
06. juni 2007 - 23:52 #9
REPLACE INTO (giver, modtager, karma) VALUES ("jens", "mogens", 25);
Avatar billede coderdk Praktikant
06. juni 2007 - 23:53 #10
(REPLACE INTO indsætter en ny hvis primærnøglen ikke matcher, og erstatter den eksisterende hvis den gør)
Avatar billede palito Nybegynder
08. oktober 2007 - 20:57 #11
tak for det coderdk!

læg et svar coderdk og thesurfer
Avatar billede coderdk Praktikant
08. oktober 2007 - 21:13 #12
:)
Avatar billede thesurfer Nybegynder
08. oktober 2007 - 21:34 #13
Ok :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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