Ik ben bezig met een CMS. De CMS kant is zo goed als af en ik ben nu bezig met de voorkant.
In de CMS kun je instellen dat hij automatisch berichten archiveert. Als je dit hebt aanstaan, kun je ook kiezen na hoeveel dagen de berichten worden gearchiveerd. Je kunt ook instellen hoeveel er minimaal getoond moeten worden.
Ik heb een query als deze:
SELECT
title
, message
, DATE_FORMAT(postdate, '%d.%m.%Y %H:%i') as showdate
FROM
tabel_naam
WHERE
postdate >= NOW()-$arch_na_x_dagen
Nu wil ik dus wel dat hij altijd 10 berichten laat zien, ongeacht of het bericht nu kleiner is dan NOW() - $arch_na_x_dagen of niet.
Ik ben (nog) niet een ster in SQL. Weet iemand misschien hoe dit te maken? :)
[quote='Bas Kreleger schreef op 15.10.2006 21:51']LIMIT 0,10 hoeft dus niet perse. Ik wil dat hij een minimaal aantal berichten laat zien, ongeacht de WHERE.
Om het in woorden te vertalen:
SELECT
velden
FROM
tabel
WHERE postdate >= NOW()-10
Maar toon altijd 10 berichten
Dit snap ik volgens mij, ik hoop dat mijn vorige post duidelijk is. Ik denk dat jij bedoelt:
- SELECTEER alle berchten die jonger zijn dan 10 dagen
- zijn dit er minder dan 10, dan aanvullen[/quote]
Ja maar dan krijg je dus alles, hij moet wel eerst aan dat voldoen, wanneer er geen 10 zijn, dan aangevuld worden met de rest. Zo heb ik het opgevat
Nee, een LIMIT 10 levert 10 resultaten op. En geen 11 of 9.
En wanneer jij keurig aflopend sorteerd op de datum, dan krijg je de 10 meest recente datums. Dan lijkt mij het probleem opgelost te zijn.
Het wordt lastiger wanneer je alle resultaten van de laatste X dagen wilt hebben met een minimum van 10, ook wanneer er geen 10 resultaten zijn. Dan zou ik met een CASE en sub-queries aan de slag gaan.
Maar laten we even de reactie van Bas afwachten, hij weet precies wat hij nodig heeft.