PHP ver gevorderde |
|
Edit: Ben blijkbaar niet de enige die het niet vind, heb het dan maar in 2 query's gedaan...
Hallo,
Ik ben bezig met een soort van rating-systeem voor tekstjes.
Voor de score van een tekstje te berekenen wil ik het aantal stemmen delen door het aantal unieke bezoekers.
Voor de top 5 van beste tekstjes, wil ik dus in 1 query zowel het aantal stemmen, als het aantal unieke bezoekers ophalen.
Maar mijn query wil maar niet lukken.
Apart werken ze, maar van zodra ik de 2 combineer loopt het mis.
Stemmen ophalen:
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( s.id )
FROM tekstjes AS t, tekst_stemmen AS s
WHERE t.id = s.tekst_id
GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd
ORDER BY COUNT( s.id ) DESC
LIMIT 5
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( s.id ) FROM tekstjes AS t, tekst_stemmen AS s WHERE t.id = s.tekst_id GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd ORDER BY COUNT( s.id ) DESC LIMIT 5
Unieke bezoekers ophalen:
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( g.id )
FROM tekstjes AS t, tekst_gelezen AS g
WHERE t.id = g.tekst_id
GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd
ORDER BY COUNT( g.id ) DESC
LIMIT 5
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( g.id ) FROM tekstjes AS t, tekst_gelezen AS g WHERE t.id = g.tekst_id GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd ORDER BY COUNT( g.id ) DESC LIMIT 5
Om alles in 1 keer op te halen heb ik dit geprobeerd:
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( s.id ) , COUNT( g.id )
FROM tekstjes AS t, tekst_gelezen AS g, tekst_stemmen AS s
WHERE t.id = g.tekst_id
AND t.id = s.tekst_id
GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd
ORDER BY (COUNT( s.id ) / COUNT( g.id )) DESC
LIMIT 5
SELECT t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd, COUNT( s.id ) , COUNT( g.id ) FROM tekstjes AS t, tekst_gelezen AS g, tekst_stemmen AS s WHERE t.id = g.tekst_id AND t.id = s.tekst_id GROUP BY t.id, t.titel, t.toegevoegd_datum, t.toegevoegd_tijd ORDER BY (COUNT( s.id ) / COUNT( g.id )) DESC LIMIT 5
Maar hier geeft hij plots bij elk count-veld een 2, wat dus niet klopt.
Weet iemand hier wat er fout is?
Alvast bedankt.
|