J'ai un tableau d'événements appelé event
. Pour les besoins de cette question, il n'y a qu'un seul champ appelé date
.Comment limiter les résultats par SUM
La requête suivante me renvoie un certain nombre d'événements qui se produisent à chaque date pour les 14 prochains jours:
SELECT
DATE_FORMAT(ev.date, '%Y-%m-%d') as short_date,
count(*) as date_count
FROM event ev
WHERE ev.date >= NOW()
GROUP BY short_date
ORDER BY ev.start_date ASC
LIMIT 14
Le résultat pourrait être la suivante:
+------------+------------+
| short_date | date_count |
+------------+------------+
| 2010-03-14 | 1 |
| 2010-03-15 | 2 |
| 2010-03-16 | 9 |
| 2010-03-17 | 8 |
| 2010-03-18 | 11 |
| 2010-03-19 | 14 |
| 2010-03-20 | 13 |
| 2010-03-21 | 7 |
| 2010-03-22 | 2 |
| 2010-03-23 | 3 |
| 2010-03-24 | 3 |
| 2010-03-25 | 6 |
| 2010-03-26 | 23 |
| 2010-03-27 | 14 |
+------------+------------+
14 rows in set (0.06 sec)
Disons que je veux Dislay ces événements par date. En même temps, je veux seulement afficher un maximum de 10 à la fois. Comment ferais-je cela?
D'une manière ou d'une autre, j'ai besoin de limiter ce résultat par le SUM du champ date_count mais je ne sais pas comment.
Quelqu'un at-il déjà rencontré ce problème?
Toute aide serait appréciée. Merci
Édité: L'exigence supplémentaire (cruciale, oops) que j'ai oublié dans mon message original, c'est que je veux seulement des jours entiers. ie. Compte tenu de la limite est de 10, il ne reviendrait les lignes suivantes:
+------------+------------+
| short_date | date_count |
+------------+------------+
| 2010-03-14 | 1 |
| 2010-03-15 | 2 |
| 2010-03-16 | 9 |
+------------+------------+
Je pense que votre question ne fera pas ce que vous attendez s'il y a un jour sans événements. –
Si aucun événement ne se produit à une date particulière, alors cette ligne de date n'apparaîtra pas, ce qui est OK pour mes objectifs – denormalizer
Voulez-vous dire que lorsque vous commencez à ajouter le date_count le 14, vous vous arrêterez le 16 puisque 1+ 2 + 9> = 10 ?????? – lexu