Не могу составить сложный sql запрос

Тема в разделе "PHP", создана пользователем phillip, 16 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    скрипт должен проверять кол-во страниц в индексе, и если кол-во изменилось, выдавать соответствующий меседж.

    Есть таблица в которой поля
    id siteid value date_checked

    То есть существуют сайты (siteid), для которых проверяется Value- значение индекса. И указывается дата, когда это значение было проверено. Я застрял на таком моменте.... как составить sql запрос, чтобы брать самую большую date_checked. То есть дату последней проверки. И сравнивать Value с предыдущей проверкой.
    Вообщем!! :D как написать запрос, чтобы проверить есть ли положительная динамика. Меняется ли value от раза к разу, и в какую сторону...
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    phillip, вообще, что-то вроде:
    select `id`,`siteid`,`value`,`date_checked` from `bla-bla` where siteid='bl-bl' order by `date_checked` DESC limit 2 - будет выдавать данные по последней проверки и предпоследней, а в скрипте уже сверяешь их.
    Или тебе в этом же запросе надо проверять?
     
    phillip нравится это.
  3. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    ну мне хоть как-нибудь.... лишь бы работало. спасибо, попробую что-нить подобное замутить
     
  4. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Мне кажется это будет не самый оптимальный вариант. Придется хранить айди последнее просмотренной тобой записи и делать несколько запросов(или один сложный). Лучше для каждого сайта сделай поле и в нем храни массив(сереализованный) из даты и к-ва страниц. Когда будешь показывать результаты, вычитай из последнего кол-ва предыдущее и показывай это число рядом в скобочках. Н-р: 435(+45) или 567(-34). Так будет красивеее.
    Да и график легко можно будет рисовать...
     
    phillip нравится это.
  5. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    не совсем понял, как это
     
  6. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    например, 01.01.2009 у вас было 400 страниц, а 02.01.2009 стало 456 страниц. У тебя получается масcив
    Код:
    $arr = array("01.01.209"=>"400", "02.01.2009"=>"456")
    Но мы не можем сохранить массив в таком виде в базу, но можно его сериализовать и привести его к строке
    Код:
    $array_to_str = serialize($arr)
    Эту переменную спокойно можно хранить в БД, а когда тебе вновь понадобится этот массив, его можно вновь получить если полученную строку пропустить через функцию unserialize
    Код:
    $arr = unserialize($array_to_str)
    после этого его можно изменить и заапдейтить в базу.

    Это способ удобен тем, что с массивом удобно работать и используется только одна запись в БД(соответствено только 1 запрос). Правда сереализованные данные весят больше, но это уже другая история =)
     
    phillip нравится это.
Статус темы:
Закрыта.