Общие > Базы данных
Исключение выборки из двух таблиц
Phoinix:
CREATE TABLE `access_log` (
`id` bigint(20) NOT NULL auto_increment,
`agent` varchar(255) default NULL,
`bytes_sent` int(10) unsigned default NULL,
`child_pid` smallint(5) unsigned default NULL,
`cookie` varchar(255) default NULL,
`machine_id` varchar(25) default NULL,
`request_file` varchar(255) default NULL,
`referer` varchar(255) default NULL,
`remote_host` varchar(50) default NULL,
`remote_logname` varchar(50) default NULL,
`remote_user` varchar(50) default NULL,
`request_duration` smallint(5) unsigned default NULL,
`request_line` varchar(255) default NULL,
`request_method` varchar(10) default NULL,
`request_protocol` varchar(10) default NULL,
`request_time` varchar(28) default NULL,
`request_uri` varchar(50) default NULL,
`request_args` varchar(255) default NULL,
`server_port` smallint(5) unsigned default NULL,
`ssl_cipher` varchar(25) default NULL,
`ssl_keysize` smallint(5) unsigned default NULL,
`ssl_maxkeysize` smallint(5) unsigned default NULL,
`status` smallint(5) unsigned default NULL,
`time_stamp` int(10) unsigned default NULL,
`virtual_host` varchar(50) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Это логи апача, но в базе данных... (Индексы еще не расставлял, пока не определился какие)
CREATE TABLE `list_hosts` (
`id` int(11) NOT NULL auto_increment,
`start_ip` varchar(100) NOT NULL default \'\',
`end_ip` varchar(100) NOT NULL default \'\',
`lan` varchar(100) NOT NULL default \'\',
`primech` varchar(100) NOT NULL default \'\',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Это таблица диапазонов, мне нужно просто убрать
Соответственно, привязка идет по remote_host и start_ip end_ip
Phoinix:
Макс
--- Цитировать ---ты вообще понял смысл моего запроса ?
--- Конец цитаты ---
Не совсем... я не понял, зачем количество записей второй таблицы...
Phoinix:
Макс
Смысл вообщем какой... вычислить количество (и откуда) не местных заходов... у меня есть диапазоны IP адресов местных провайдеров... я просто хочу исключить (временно) их из общего списка...
Phoinix:
Phoinix
--- Цитировать ---ты вообще понял смысл моего запроса ?
--- Конец цитаты ---
Все дошло... спасибо ;)
Phoinix:
Все... разобрался... :)
1. SELECT COUNT(*) FROM main_hosts;
Результат $counts;
2. SELECT access_log.remote_host, access_log.agent, MOD(COUNT(access_log.id), $counts) AS repit, COUNT(access_log.id)/$counts AS counts
FROM access_log, main_hosts
WHERE access_log.remote_host NOT BETWEEN main_hosts.start_ip AND main_hosts.end_ip
GROUP BY access_log.remote_host
HAVING repit = 0
Навигация
Перейти к полной версии