J'ai un tableau avec des messages et je veux générer un graphique qui montre combien de messages ont été faits au cours des 30 dernières minutes, et les 30 dernières minutes avant cela, etc Les messages sont sélectionnés par leur post_handler et post_status.Générer des statistiques dans MySQL
La structure de la table ressemble à ceci.
CREATE TABLE IF NOT EXISTS `posts` (
`post_title` varchar(255) NOT NULL,
`post_content` text NOT NULL,
`post_date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`post_handler` varchar(255) NOT NULL,
`post_status` tinyint(4) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
KEY `post_status` (`post_status`),
KEY `post_status_2` (`post_status`,`id`),
KEY `post_handler` (`post_handler`),
KEY `post_date_added` (`post_date_added`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2300131 ;
Les résultats que j'aimerais recevoir, triés après post_date_added.
period_start period_end posts
2011-12-06 19:23:44 2011-12-06 19:53:44 10
2011-12-06 19:53:44 2011-12-06 20:23:44 39
2011-12-06 20:23:44 2011-12-06 20:53:44 40
droit Je vais maintenant utiliser la solution où je dois exécuter cette requête plusieurs fois, puis insérez les données dans une autre table à partir du script PHP.
SELECT COUNT(*) FROM posts WHERE post_handler = 'test' AND post_status = 1 AND post_date_added BETWEEN '2011-12-06 19:23:44' AND '2011-12-06 19:53:44'
Connaissez-vous une autre solution? Est-il possible d'exécuter une requête qui insère également des résultats dans la base de données, tout en une requête?