U hebt een manier nodig om te ordenen welke records voorrang krijgen op andere bij het optellen tot uw maximale eenheden. Hoe weet u anders welke reeks records die in totaal 600 is, u bijhoudt?
SELECT d.id, d.size, d.date_created
FROM documents d
INNER JOIN documents d2 ON d2.tag_id=d.tag_id AND d2.date_created >= d.date_created
WHERE d.tag_id=26
GROUP BY d.id, d.size, d.date_created
HAVING sum(d2.size) <= 600
ORDER BY d.date_created DESC
Dit is slechts een basisvraag om u op weg te helpen, en er zijn nog een aantal problemen die moeten worden opgelost:
- Het stopt bij <=600, dus in de meeste gevallen vult u uw maatlimiet niet precies op. Dit betekent dat je het misschien wilt aanpassen om nog een record toe te staan. Als het eerste record bijvoorbeeld> 600 is, levert de query niets op, en dat kan een probleem zijn.
- Het zal niets doen om later te controleren op aanvullende kleinere records die misschien nog onder de dop passen.
- Records met identieke date_created-waarden kunnen hier en daar een soort van 'dubbel geteld' zijn.