[SQL] probleem met sorteren van een count

Pagina: 1
Acties:

  • thriller
  • Registratie: Augustus 2003
  • Nu online
Ik wil 2 tabellen delen met elkaar en dan vermenigvuldigen met 10 om een ratio eruit te krijgen en deze wil ik dan sorteren op ratio.

SELECT
userid, username, COUNT((thanks_recieved / topiccounter) * 10) AS ratio
FROM user
GROUP BY thanks_recieved, topiccounter
ORDER BY ratio
DESC LIMIT 0, 50

Dit is wat ik momenteel heb en ik krijg wel reultaten, maar niet de goede.

Het gaat dus om de tabellen thanks_recieved & topiccounter de overige tabellen zijn hiervoor niet belangrijk en ze moeten dus gesorteerd worden om ratio wat de uitkomts van count zou moeten zijn.

Zo wil ik op mijn forum de top50 weergeven.

Ik hoop dat ik voldoende info geef en dat iemand mij kan helpen met dit probleem.

Oja nog 1 ding, de tabellen kunnen soms de waarde 0 bevatten en delen door 0 kan natuurlijk niet. Ik heb dit al gedaan via php en dan controleer ik eerst of de waarde 0 is zo ja dan maak ik er 1 van om fouten te voorkomen. Nu is dus mijn vraag of ik hier hetzelfde probleem mee krijg en of ik dit kan aanpassen.

PS. ik gebruik mysql

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 16-01 10:59

thomaske

» » » » » »

Je post is niet helemaal duidelijk, je haalt wat termen doorelkaar: ipv tabellen bedoel je denk ik velden.
Verder heb je voor deze query imho geen count en groupby nodig:
code:
1
2
3
4
5
6
7
SELECT 
  userid
, username
, IF(topiccounter=0, 0, (thanks_received / topiccounter)*10) AS ratio
FROM user
ORDER BY ratio
LIMIT 0, 50


Meteen het 'divide-by-zero' probleem opgelost :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Ik zie, net als thomaske, niet in waarom je count gebruikt? :) Weet je wel wat count überhaupt doet?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • thriller
  • Registratie: Augustus 2003
  • Nu online
Volgens mij telt count het aantal rijen en is dit idd niet nodig. Maar het was nogal laat en echt veel verstand heb ik er niet van.

Ik heb inmiddels de oplossing

$getstats_ratios = $db->query_read("
SELECT userid, usergroupid, IF(displaygroupid=0, usergroupid, displaygroupid) AS displaygroupid, username,
CASE WHEN topiccounter = 0 THEN 0
ELSE ((thanks_recieved / topiccounter) * 10)
END AS ratio
FROM " . TABLE_PREFIX . "user
ORDER BY ratio
DESC LIMIT 0, $displayrecords
");

Dus bedankt voor jullie hulp

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
[mierenn**kerij]
tis ook wel received en niet recieved :(
[/mierenn**kerij]

(mjah ik kannie goed tegen spelfouten in je datamodel :))

[ Voor 28% gewijzigd door reddevil op 18-08-2006 11:09 ]


  • thriller
  • Registratie: Augustus 2003
  • Nu online
Haha ik weet het, maar had geen zin om het weer aan te gaan passen overal. Ik heb het 1x ingetikt en daarna gewoon zonder te kijken gekopieerd.
Pagina: 1