Gå til innhold

Anbefalte innlegg

Hei.

 

Jeg har en MYSQL-databasetabell med kolonne poeng og dato som jeg bruker med PHP. Dato er av type datetime og poeng av type int.

 

For øyeblikket bruker jeg dette queryet;

"SELECT * FROM Posts WHERE date => date_sub(now(), interval 1 day) ORDER BY points DESC LIMIT 0,15".

 

Dette vil jo selvsagt kun hente posts som har blitt lagt fra og med 1 dag siden, og sortere etter antall poeng. Det jeg ønsker å gjøre er å lage et query som kan returnere radene i rekkefølge basert på antall poeng/antall timer siden saken har blitt postet.

 

Håper noen har et par gode tips :)

Lenke til kommentar
Videoannonse
Annonse
SELECT * FROM Posts WHERE date => date_sub(now(), interval 1 day) ORDER BY points/now()-date_sub(now(), interval 1 day) DESC LIMIT 0,15

 

Du må sikkert gjøre noe for å få now()-date_sub(now(), interval 1 day) til å bli antall timer

 

Hmm. Prøvde meg litt på en DATE_FORMAT på DATE_SUB(). Noe sånt som now() / (DATE_FORMAT(DATE_SUB(now(), interval 1 day), "%H") men den gang ei :)

 

Har et annet spørsmål også som jeg tenkte jeg kunne skyte inn i samme tråd.

 

Jeg har 3 tabeller; Brukere, Posts og Poeng. Brukere inneholder brukerID + annen info, Posts inneholder postID samt brukerID(innsender) og Poeng inneholder brukerID+ ppostID.

Meningen med Poeng-tabellen er å stappe inn en ny linje hver gang en bruker gir poeng til en post samt sjekke at en bruker ikke prøver å gi poeng til samme post to ganger.

 

Har prøvd meg litt på noen queries som kan generere hvilken bruker som har fått flest poeng;

 

SELECT Brukere.brukerID, Posts.*, SUM(DISTINCT poeng) AS "sumPoeng" FROM Brukere JOIN Posts ON Brukere.brukerID = Posts.innsender

 

Dette fungerer selvsagt ikke. Jeg vurderer nesten å stappe inn en til kolonne i Brukere som inneholder poeng en bruker har fått, og så oppdaterer jeg den når en post får en stemme. Kanskje en bedre løsning uansett :)

 

Jeg har også prøvd meg på GROUP BY; SELECT * FROM Posts GROUP BY innsender -- får da kun 1 rad for hver enkelt innsender, men antall poeng er ikke summert (kun høyeste vises)

Endret av jabberjab
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å
×
×
  • Opprett ny...