Это таблица
CREATE TABLE IF NOT EXISTS `stats` (
`block_id` int(11) NOT NULL DEFAULT '0',
`site_id` int(11) NOT NULL DEFAULT '0',
`teaser_id` int(11) NOT NULL DEFAULT '0',
`campaign_id` int(11) NOT NULL DEFAULT '0',
`category_id` int(11) NOT NULL DEFAULT '0',
`date` date NOT NULL,
`region_id` varchar(3) NOT NULL DEFAULT 'NO',
`views_teaser` int(11) NOT NULL DEFAULT '0',
`views_block` int(11) NOT NULL DEFAULT '0',
`clicks` int(11) NOT NULL DEFAULT '0',
`ctr` float NOT NULL DEFAULT '0',
`money_out` float NOT NULL DEFAULT '0',
`money_in` float NOT NULL DEFAULT '0',
KEY `teaser_id` (`teaser_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Запросы к ней идут вида:
SELECT
*
FROM
`stats`
WHERE
`block_id` = 1
AND
`site_id` = 1
AND
`teaser_id` = 1
AND
`campaign_id` = 1
AND
`category_id` = 1
AND
`date` = "2013-01-01"
AND
`region_id` = "RU"
И потом один из таких:
UPDATE
`stats`
SET
`views_teaser` = `views_teaser` + 1,
`views_block` = `views_block` + 1,
`clicks` = `clicks` + 1,
`money_out` = `money_out` + 12,
`money_in` = `money_in` + 12,
`ctr` = ROUND(`clicks`/`views_teaser`, 4)
WHERE
`block_id` = 1
AND
`site_id` = 1
AND
`teaser_id` = 1
AND
`campaign_id` = 1
AND
`category_id` = 1
AND
`date` = "2013-01-01"
AND
`region_id` = "RU"
INSERT INTO
`stats`
SET
`views_teaser` = 1,
`views_block` = 1,
`clicks` = 1,
`money_out` = 23.3,
`money_in` = 23.2,
`block_id` = 1,
`site_id` = 1,
`teaser_id` = 1,
`campaign_id` = 1,
`category_id` = 1,
`date` = "2013-01-01",
`region_id` = "RU",
`ctr` = 0.001;