За последние 24 часа нас посетили 62712 программистов и 1740 роботов. Сейчас ищут 995 программистов ...

Помогите со сложным запросом

Тема в разделе "MySQL", создана пользователем websqlneeder, 31 июл 2007.

  1. websqlneeder

    websqlneeder Активный пользователь

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    Добрый щень.

    В общем есть одна таблица, которая в себе хранит информацию о кликах по ссылке на сайте - айпи адрес кликнувшего, время клика...
    [sql]
    CREATE TABLE `stat_click3` (
    `ip` text,
    `***` text,
    `***` int(11) default NULL,
    `time` datetime default NULL
    );
    [/sql]
    Итак нужно узнать за определенный период сколько УНИКАЛЬНЫХ людей кликнуло. Ну с этой задачей я справился:
    PHP:
    1. <?
    2. $sql="SELECT DISTINCT ip FROM stat_click3 WHERE *** AND WEEK(time) = WEEK(NOW()) ";
    3. $result=mysql_query($sql);
    4. $cnt=mysql_num_rows($result); ?>
    5.  
    Теперь есть база айпи адресов по странам и по отдельности я узнаю из какой страны следующим кодом:
    PHP:
    1.  
    2. <?
    3. $res=mysql_query("select country from ip2country where inet_aton('$ip')>=start_long and inet_aton('$ip')<=stop_long;") or die(mysql_error());
    4. while ($ar=mysql_fetch_array($res))
    5. {
    6. $ret=$ar["country"];
    7. }
    8. if($ret==""){$ret="N/A";}
    9. if($ret=="UKR"){$t_ukr++;} ?>
    Теперь ВОПРОС: как можно обьединить эти два действия что бы можно было узнать сколько уникальных человек С УКРАИНЫ кликнуло за день, (за неделю, за месяц) ...
     
  2. Anonymous

    Anonymous Guest

    Добрый, добрый...

    Форматируйте, пожалуйста, код, предназначенными для этого тегами. Второй раз за вас этого делать не буду...
     
  3. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    [sql]select ip, country
    from stat_click3
    left join ip2country on inet_aton(ip) between start_long and stop_long
    where ***
    and week(time) = week(now())[/sql]
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    и group by
     
  5. websqlneeder

    websqlneeder Активный пользователь

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    Стас спасибо! Попробую.

    Армадило, а group by куда?
     
  6. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    [sql]select country, count(*)
    from stat_click3
    left join ip2country on inet_aton(ip) between start_long and stop_long
    where ***
    and week(time) = week(now())
    group by ip[/sql]
     
  7. websqlneeder

    websqlneeder Активный пользователь

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    Спасибо!

    Вот только проблемка есть. Дело в том, что таблица stat_click3 и ip2country находятся в разных БД. Как тут быть? Так то я открывал и закрывал соединение а здесь как быть?
     
  8. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    ...db1.stat_click3 left join db2.ip2country...
     
  9. websqlneeder

    websqlneeder Активный пользователь

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    В таком случае пользователь должен иметь права доступа на обе БД?