Potřebujete nějaký způsob, jak uspořádat, které záznamy mají přednost před ostatními, když se sčítají vaše maximální jednotky. V opačném případě, jak víte, kterou sadu záznamů s celkovým počtem až 600 uchováváte?
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
Toto je pouze základní dotaz, který vám pomůže začít, a zbývá vyřešit řadu problémů:
- Zastaví se na <=600, takže ve většině případů svůj limit velikosti nenaplníte přesně. To znamená, že jej možná budete chtít vyladit, abyste umožnili ještě jeden záznam. Pokud je například první záznam> 600, dotaz nevrátí nic a to může být problém.
- Pozdější kontrola dalších menších záznamů, které by se ještě mohly vejít pod víčko, nic neudělá.
- Záznamy s identickými hodnotami date_created lze tu a tam započítat „dvojitě“.