|
Categorieën >
PHP & SQL
2 counts delen (Opgelost)
MothZone – 07/06/2008 22:56 (Laatst gewijzigd op 09/06/2008 23:28)
|
|
offline
|
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. |
2 antwoorden
|
|
|
offline
|
Crew PHP
|
je kunt doen na je group regel
HAVING COUNT( s.id ) / COUNT( g.id ) AS gedeeld
ORDER BY gedeeld
weet niet of having dit ook kan, maar denk het wel
|
|
|
|
offline
|
PHP ver gevorderde
|
Nee, het probleem is dat hij verkeerde resultaten toont, dus de verbinding met de andere tabellen is ergens verkeerd.
Ik zie alleen niet wat er dan fout is.
|
Dit onderwerp is gesloten.
|
|
|