Sorteren op verschillende kolommen
Het is een tabel met namen en foto's.
Alle namen hebben een verschillende naam en de foto's ook.
Nu wil ik het volgende:
1. Ik wil alle rijen laten zien uit de tabel
2. Nu moeten bovenaan alle rijen komen die wel een foto hebben
3. Daarna moeten alle namen komen die geen foto hebben.
Nu is dit geen rocketscience, maar het gaat hierom.
Alle rijen die een foto bevatten moeten random getoond worden en daaronder komen de rijen zonder foto ook random...
Wie kan me daarin helpen?
Ik heb het nu zo:
SELECT ID, naam, foto ORDER BY foto DESC, RAND();
Nu doet ie dit:
Bovenaan komen alle foto's, daaronder komen random de rijen zonder foto.
Ik mis dus alleen dat ie de foto's bovenaan niet random neerzet...
zucht...
Dit is slechts een voorbeeldje.
Ik krijg echter de indruk dat jij 2x op de naam wilt sorteren, 1x met foto en 1x zonder foto. Dan heb je 2 queries nodig of je moet met een subquery aan de slag.
SELECT ID, naam, foto
WHERE foto != ''
ORDER BY RAND()
)
UNION
(
SELECT ID, naam, foto
WHERE foto = ''
ORDER BY RAND()
)
Was even een typfoutje. Ik had het inderdaad zoals jij had staan.
Maar ik bedoel hetgeen wat Jan heeft gepost.
Jan,
Zoiets zou het inderdaad moeten zijn.
Alleen ik heb het nu toegepast, maar werkt het nog niet. Hij sorteert nu wel eerst alle foto's en dan degene zonder foto, maar hij sorteert ze op ID aflopend.
Waarschijnlijk werkt de ORDER BY niet binnen de () klopt dat?
Als ik m er namelijk buiten zet, dan zet ie alles wel random neer (maar dus ook weer de foto's tussen de niet foto's)
1) eerst de records met foto's ophalen, die in een array proppen en dan de array door elkaar husselen met shuffle
2) hetzelfde doen voor de records zonder foto's
Als ik het dus met 2 verschillende queries ga doen, heb ik alleen een volgend probleem... ;-(
Ik laat namelijk 5 resultaten per pagina zien. Dit doe ik dmv LIMIT in de query.
Hoe kan ik dit nu verwerken als ik met arrays ga werken?
Dit is de code namelijk:
Dan zou ik van de twee arrays 1 array maken (met foto eerst) en die in een sessie stoppen. Hou in je sessie ook een waarde bij zodat je weet met welk arrayelement je moet beginnen.
Dit gaat alleen even m'n pet te boven.
Ik zou even niet weten hoe ik dat moet maken.
Als je me daarin zou kunnen helpen zou dat top zijn.
zo niet, dan leg ik het even naast me neer en dan kijk ik er later weer even naar.