jabberjab Skrevet 2. mars 2009 Del Skrevet 2. mars 2009 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
blackbrrd Skrevet 2. mars 2009 Del Skrevet 2. mars 2009 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 Lenke til kommentar
jabberjab Skrevet 2. mars 2009 Forfatter Del Skrevet 2. mars 2009 (endret) 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 2. mars 2009 av jabberjab Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå