|
|
|
|
|
для: Loki
(26.01.2006 в 14:37)
| | ON используется только для связи таблиц, т.е. это бесплатное приложение к JOIN (aka ,) и LEFT JOIN. От мануала отравитесь - там местами ни по русски, ни по английски читать невозможно, но он стал гораздо лучше когда за него Поль Дюбуа взялся. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 14:22)
| | надо же, а я думал что ON - аналог WHERE... пошел курить мануал дальше:) | |
|
|
|
|
|
|
|
для: Loki
(26.01.2006 в 11:06)
| | А его в WHERE нужно засовывать
SELECT * FROM stat LEFT JOIN ip_compact ON stat_ip BETWEEN init_ip AND end_ip WHERE stat.content_id=6
|
помоему и BETWEEN тоже нужно... а чего-то у вас группировки нет - так надо? | |
|
|
|
|
|
|
|
для: cheops
(25.01.2006 в 23:23)
| | Попробовал. Как будто работает, но почему-то начисто игнорируется условие
| |
|
|
|
|
|
|
|
для: cheops
(25.01.2006 в 23:23)
| | на самом деле, там получается четырехтабличный запрс, так что может быть препочесть более наглядное решение? | |
|
|
|
|
|
|
|
для: Loki
(25.01.2006 в 21:05)
| | Классическая задача для LEFT JOIN
SELECT * FROM stat LEFT JOIN ip_compact ON stat.content_id=6 AND stat_ip BETWEEN init_ip AND end_ip
|
Только возможно порядок следования таблиц в операторе FROM изменить, я не очень понял из какой таблицы необходимо оставить IP-адреса... | |
|
|
|
|
|
|
| пытаюсь сделать отчет по пользователям.
Структура тиблиц примерно следующая
CREATE TABLE 'ip_compact' (
'init_ip' bigint(20) NOT NULL default '0',
'end_ip' bigint(20) NOT NULL default '0',
'city_id' int(11) NOT NULL default '0'
)
CREATE TABLE 'stat' (
'stat_id' int(11) NOT NULL auto_increment,
'stat_ip' bigint(20) NOT NULL default '0',
'content_id' int(11) NOT NULL default '0',
'putdate' datetime NOT NULL default '0000-00-00 00:00:00',
)
|
int_ip и end_ip - диапазон ip адресов
Пытаюсь одним запросом выбрать информацию обо всех посетителях посещавших страницу с определенным content_id. Пока выглядит так:
SELECT * FROM stat, ip_compact WHERE stat.content_id=6 AND stat_ip BETWEEN init_ip AND end_ip
|
Проблема в том, что если для данного IP регион не определен, то IP попросту не выводится. А мне нужно чтобы выводился, но без данных о местоположении. Чувствую, что IF мне поможет, но работающее условие составить не получается. | |
|
|
|
|