Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите составить запрос на выборку (Владимир) 18/04/2007 - 07:46:09
      Re: Помогите составить запрос на выборку (WebGirl) 18/04/2007 - 23:55:14

> Original message text:
> From: Владимир - 18/04/2007 - 07:46:09
> Subject:Помогите составить запрос на выборку
> -----------------
> Добрый день. Очень расчитываю на Вашу помощь.
> Есть таблица. В ней следующие поля - ID, ID_USER, ID_IBLOCK, POINTS, IP, DATETIME.
> Собственно скрипт который пользует эту бд есть ни что иное как голосование. Мне необходимо выбрать все АЙпи за последний день которые голосовали за определенный ответ более пяти раз (ID_IBLOCK в данном случае как раз и содержит ответ посетителя).
>
> Проблем тут много. Во-первых совершенно непонятно каким образом сделать выборку за последний день если у меня в поле DATETIME и дата и время (вернуть бы время на месяц назад я его разделил бы на два поля)
>
> Я так понимаю надо сначала выбрать все уникальные айпишники за день, потом через цикл уже начинать выполнять второй запрос, который по идее и должен определять встречается ли в записях с этим ИП в поле ID_IBLOCK какое-либо число более пяти раз.
> Вобщем если появятся мысли как это реализовать, буду Вам безмерно благодарен. Если где-то глупо объяснил, прошу прощения.
>


From: WebGirl - 18/04/2007 - 23:55:14
Subject:Помогите составить запрос на выборку
-----------------
Вполне можно обойтись одним запросом. Используйте группировку:

SELECT IP, count() AS c FROM table_name
GROUP BY ID_BLOCK, IP, DATE(DATETIME)
HAVING c>5

Здесь все поля с одинаковыми значениями ID_BLOCK, IP, DATETIME группируются и подсчитывается количество одинаковых. Использование функции DATE() позволяет выбрать только дату из типа DateTime.

Однако использование типа Date вместо конвертации DateTime в Date, значительно ускорит выборку (порядка нескольких раз, а то и нескольких десятков раз)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31308



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |