Не срабатывает функция WHERE

12
Павел Кирхмаер
На сайте с 21.06.2008
Offline
86
994

Добрый ... !

Подскажите, уже замучался ... нужно выбрать самые повторяющиеся теги в столбце search за сегодня ...

В phpMyAdmin срабатывает всё отлично ...

SELECT search, COUNT(search) as count FROM search WHERE date BETWEEN '2010-11-08 00:00:00' AND '2010-11-08 23:59:59' GROUP BY(search) ORDER BY count DESC LIMIT 20

Но вот в php файле ни в какую не хочет:

$dateZz = date ("Y-m-d");

$qGetCloud = mysql_query("SELECT search, COUNT(search) as count FROM search WHERE date BETWEEN '$dateZz 00:00:00' AND '$dateZz 23:59:59' GROUP BY(search) ORDER BY count DESC LIMIT 20");

Если убрать ограничение по дате, то и в php срабатывает ... что может быть не так?

dvaes
На сайте с 03.09.2007
Offline
65
#1

смотрите различия этого запроса с тем, как обрабатывает его phpmyadmin. может из-за GROUP BY(search) ? обычно пишут GROUP BY search

L
На сайте с 12.11.2009
Offline
79
#2

отдельно нужно считать COUNT(search) и делать выборку.

при подсчете переменную count переименовать в cnt к примеру.

Ord
На сайте с 15.11.2005
Offline
175
Ord
#3

Заключите название поля date в апострофы или как они называются. `date`

$dateZz = date ("Y-m-d");
$qGetCloud = mysql_query("SELECT search, COUNT(search) as count FROM search WHERE `date` BETWEEN '$dateZz 00:00:00' AND '$dateZz 23:59:59' GROUP BY(search) ORDER BY count DESC LIMIT 20");
Создаем лучший кулинарный проект, iamcook.ru
Павел Кирхмаер
На сайте с 21.06.2008
Offline
86
#4
lyoxa:
отдельно нужно считать COUNT(search) и делать выборку.
при подсчете переменную count переименовать в cnt к примеру.

Я предполагал, что проблема в этом ... но попробовав в phpMyAdmin тотже код и он сработал ... ☝

Так это можно сделать в один запрос ... ? ...

S
На сайте с 14.04.2008
Offline
60
#5

А в переменной $dateZz перед подстановкой в запрос содержится именно то, что нужно? Уверены?

Сам-то запрос вроде в порядке, хотя я не могу понять, зачем использовать BETWEEN ... AND ... там, где за глаза достаточно чего-то вроде WHERE DATE_FORMAT(`date`, '%Y-%m-%d')=$dateZz.

Павел Кирхмаер
На сайте с 21.06.2008
Offline
86
#6
seraphim:
А в переменной $dateZz перед подстановкой в запрос содержится именно то, что нужно? Уверены?
Сам-то запрос вроде в порядке, хотя я не могу понять, зачем использовать BETWEEN ... AND ... там, где за глаза достаточно чего-то вроде WHERE DATE_FORMAT(`date`, '%Y-%m-%d')=$dateZz.

Да, там всё правильно и подходит ... проблема в COUNT(search) ... как сказал lyoxa, нужно считать отдельно ...

Можно сделать в 2 запроса ... но хотелсь бы как-то в один ...

S
На сайте с 14.04.2008
Offline
60
#7

А если так:

SELECT `search`, COUNT(`search`) as `count` 

FROM `search`
GROUP BY 1
HAVING DATE_FORMAT(`date`, '%Y-%m-%d') = $dateZz
ORDER BY 2 DESC
LIMIT 0,20
Павел Кирхмаер
На сайте с 21.06.2008
Offline
86
#8
seraphim:
А если так:
SELECT `search`, COUNT(`search`) as `count` 

FROM `search`
GROUP BY 1
HAVING DATE_FORMAT(`date`, '%Y-%m-%d') = $dateZz
ORDER BY 2 DESC
LIMIT 0,20

Спасибо ... но одинаково HAVING также не дружит с COUNT ... :(

I
На сайте с 05.06.2006
Offline
117
#9

1. Количество записей в запросе отдаст вам функция

mysql_num_rows($qGetCloud), count можно исключить.

2. в запросе с датой, если дата типа дататайм, используйте штамп TIMESTAMP

Миграция с ISPManager 4 в VestaCP (https://chast.in/copy-users-from-ispmanager-2-vestacp.html) Хостинг серверов, пользуюсь сам (http://vps-server.ru/rp/pl.php?96)
Павел Кирхмаер
На сайте с 21.06.2008
Offline
86
#10
ivtrans:
1. Количество записей в запросе отдаст вам функция
mysql_num_rows($qGetCloud), count можно исключить.
2. в запросе с датой, если дата типа дататайм, используйте штамп TIMESTAMP

1. Не нужно считать количество записей, а количество повторений!

2. Да без разницы, штамп или без него ...

Меня удивляет, что в phpMyAdmin работает, а с сайта нет ... 😡

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий