Общие > Базы данных

Исключение выборки из двух таблиц

<< < (3/3)

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

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии