Gå til innhold

Endre WHERE etter hvilken verdi et felt har i MySQL [LØST]


Anbefalte innlegg

Hei!

 

Jeg holder på en brukerside (til spillsiden min som jeg jobber med) hvor spilleren kan se hvordan plass vedkommende ligger på totalt i de forskjellige spillene han har spilt.

Her er spørringen som jeg har så langt:

SELECT h.score, g.title, h.mode, g.url, u.username,
(SELECT count(id) + 1 FROM highscores WHERE mode = h.mode AND score < h.score) AS place
FROM highscores h
INNER JOIN games g ON h.gid = g.id
INNER JOIN users u ON g.uid = u.id
WHERE h.uid = '1'
ORDER BY place ASC

 

Det som skjer her er at den finner ut om det har noen andre bedre tid enn det brukeren har. Og problemet mitt er at denne spørringen bare fungere på spill hvor det er om å gjøre å få lavest mulig score, men ikke når det er om å gjøre å få høyest score. Jeg har et felt i games-tabellen (den heter api_order) som det står hvilken "vei" underspørring skal velge i (asc eller desc), men vet ikke om det er mulig å hente ut denne informasjonen for å så velge etter feltets innhold?

 

Okay, det ble veldig dårlig forklart... :p Men det er på slutten av linje 2 i koden som jeg sikter til (score < h.score). Så det jeg lurer på er om det er mulig å gjøre noe sånn at for hver rad så ser den om det står ASC eller DESC i games.api_order og dermed finner ut om det skal være < eller > i mellom score og h.score?

Endret av RipeX
Lenke til kommentar
Videoannonse
Annonse

Kan du ikke lage en skala, som gir hvert enkelt spills poengsum en verdi på en fastsatt skala.

 

loop trough games
if currentGame.name = "CoD"
  currentGame.finalScore = scoreAlgorithm(currentGame.score, )
else if currentGame.name = "RACER"
  scoreAlgorithm(currentGame.score)

 

Algoritmen må du selv utarbeide.

Lenke til kommentar
Kan du ikke lage en skala, som gir hvert enkelt spills poengsum en verdi på en fastsatt skala.

 

loop trough games
if currentGame.name = "CoD"
  currentGame.finalScore = scoreAlgorithm(currentGame.score, )
else if currentGame.name = "RACER"
  scoreAlgorithm(currentGame.score)

 

Algoritmen må du selv utarbeide.

 

Takk for tipset! Takket være ditt svar så kom jeg på en løsning som funket! Den ser ikke så bra ut, men den funker! :D

 

SELECT h.score, g.title, h.mode, g.url, u.username,
IF(g.api_order = 'asc',
(SELECT count(id) + 1 FROM highscores WHERE mode = h.mode AND score < h.score),
(SELECT count(id) + 1 FROM highscores WHERE mode = h.mode AND score > h.score)) AS place
FROM highscores h
INNER JOIN games g ON h.gid = g.id
INNER JOIN users u ON g.uid = u.id
WHERE h.uid = '1'
ORDER BY place ASC

Endret av RipeX
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...