Toon posts:

[MYSQL] Random row met order by aantal hits

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil dus een query die zorgt dat er ongeveer 10 rijen uit de database gehaald worden, waarvan als eerste gesorteerd moet worden op een veld "hits" en vervolgens de rest wat als hits 0 heeft random word weergegeven. Is dit te doen met mysql? Ik heb al van alles geprobeerd met order by etc maar het lukt niet. Iemand een suggestie

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Misschien dat je even wat relevante code kunt posten? Maar kijk iig maar even naar het LIMIT-statement. :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
DeverauX schreef op zaterdag 27 mei 2006 @ 14:00:
Misschien dat je even wat relevante code kunt posten? Maar kijk iig maar even naar het LIMIT-statement. :)
SELECT * FROM T_records WHERE title LIKE '%$_POST[search]%' AND visible = '1' ORDER BY hits DESC LIMIT 10;

Deze gebruik ik nu, maar dan wil ik dus zorgen dat de rest zonder hits randomized word.

[ Voor 16% gewijzigd door Verwijderd op 27-05-2006 14:02 ]


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

NMe

Quia Ego Sic Dico.

Laat eerst maar eens zien wat je geprobeerd hebt. Je bent al eerder op onze quickstart gewezen; hou je daar dan ook aan. ;)
Programming Beleid - De "quickstart"

'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.


Verwijderd

Topicstarter
-NMe- schreef op zaterdag 27 mei 2006 @ 14:02:
Laat eerst maar eens zien wat je geprobeerd hebt. Je bent al eerder op onze quickstart gewezen; hou je daar dan ook aan. ;)
Programming Beleid - De "quickstart"
Dingen die toch niet werken dus weinig zin om dat te posten.

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
Verwijderd schreef op zaterdag 27 mei 2006 @ 14:06:
[...]


Dingen die toch niet werken dus weinig zin om dat te posten.
je bewijst ermee dat je er mee bezig bent geweest, en veel belangrijker, wij zien waar je fout gaat, en kunnen zo feedback geven.
zo leer je er dus van..

This message was sent on 100% recyclable electrons.


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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zaterdag 27 mei 2006 @ 14:06:
Dingen die toch niet werken dus weinig zin om dat te posten.
Die uitspraak bewijst maar weer dat je die quickstart niet hebt doorgenomen, want als je dat wel had gedaan, dan had je geweten waarom ook niet-werkende oplossingen relevant zijn. ;)

Maar goed... Ervanuitgaande dat je PHP gebruikt (lijkt er wel op):
Haal eerst de totale count van records op waarbij het aantal hits niet 0 is.
SQL:
1
SELECT COUNT(`id`) FROM `tabel` WHERE `hits` <> 0

Dat aantal neemt je, en daar tel je 10 vanaf. Vervolgens kijk je of je dan op een getal hoger dan 0 uitkomt. Zo ja, dan zijn er eerst nog wat andere records met meer dan 0 hits.
PHP:
1
2
3
4
5
$query = '(SELECT * FROM `tabel` WHERE `hits` <> 0 ORDER BY `hits` DESC LIMIT 10) UNION ';
if (($getalDatJeOphaalde - 10) > 0) {
  $query .= '(SELECT * FROM `tabel` WHERE `hits` <> 0 ORDER BY RAND() LIMIT 10,'.($getalDatJeOphaalde - 10).') UNION ';
}
$query .= '(SELECT * FROM `tabel` WHERE `hits` = 0 ORDER BY RAND())';

Op die manier zou je resultset goed gesorteerd moeten zijn.

'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.

Pagina: 1