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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compter le nombre d'items dans une table et insérer le résultat dans une autre

par dmx-moteur » 28 janv. 2009, 13:50

Désolé, j'avais oublié...

par Truc » 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.

par dmx-moteur » 27 janv. 2009, 15:00

Ca marche super bien !
Merci.

par Cobaye » 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+

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

par dmx-moteur » 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 ?