Hai bisogno di un modo per ordinare quali record hanno la priorità sugli altri quando si sommano alle tue unità massime. Altrimenti, come fai a sapere quale set di record per un totale fino a 600 conservi?
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
Questa è solo una query di base per iniziare e ci sono ancora una serie di problemi da risolvere:
- Si ferma a <=600, quindi nella maggior parte dei casi non riempirai esattamente il limite di dimensioni. Ciò significa che potresti volerlo modificare per consentire un altro record. Ad esempio, se il primo record è> 600, la query non restituirà nulla e potrebbe essere un problema.
- Non servirà a nulla controllare in seguito ulteriori record più piccoli che potrebbero rientrare ancora nel limite.
- I record con valori date_created identici potrebbero essere "contati due volte" qua e là.