Compter le nombre d'items dans une table et insérer le résultat dans une autre

Eléphant du PHP | 95 Messages

27 janv. 2009, 11:11

Bonjour,

Voici un petit problème et je ne sais pas très bien quelle méthode utiliser...
J'ai une table qui stocke les logs de mon serveur. Cette table est vidée toutes les nuits.

Code : Tout sélectionner

CREATE TABLE `logs` ( `id` int(11) NOT NULL auto_increment, `host` varchar(100) default NULL, `date` datetime default NULL, `ip` varchar(50) default NULL, `page` varchar(250) default NULL, `user_agent` text, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Je souhaite stocker dans une autre table toute les ip qui ont demandé plus de 100 pages. J'ai donc la requête qui va bien pour ça :

Code : Tout sélectionner

SELECT COUNT(ip) as nbre, ip, host, user_agent FROM `logs` GROUP BY ip HAVING COUNT(ip) > 99 ORDER BY nbre DESC
.

Comment faire pour inserer dans ma nouvelle table "archives" (colonnes = id, date, nbre, ip, host, user_agent) le résultat de la requête ci-dessus (le script sera exécuté avant suppression des logs de la journée) ?
J'ai pensé à insérer le résultat de la requête SELECT COUNT dans un tableau Array mais je ne sais pas si c'est la solution la plus "propre"... J'ai vu aussi qu'en SQL il est possible de combiner un INSERT avec un SELECT...
Vous que feriez-vous ?
Je veux apprendre !!

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

27 janv. 2009, 12:16

tu peux faire INSERT INTO archives (nbre, ip, host, user_agent) SELECT COUNT(ip) as nbre, ip, host, user_agent FROM `logs` GROUP BY ip HAVING COUNT(ip) > 99 ORDER BY nbre DESC

Tu mets la requete select à la place de "values (..."

a+
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Eléphant du PHP | 95 Messages

27 janv. 2009, 15:00

Ca marche super bien !
Merci.
Je veux apprendre !!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 janv. 2009, 15:07

Modération :
dmx-moteur, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 95 Messages

28 janv. 2009, 13:50

Désolé, j'avais oublié...
Je veux apprendre !!