2014-12-13 5 views
0

Так что, возможно, из-за недостатка сна, но у меня серьезная неисправность мозга, и я не могу вспомнить, что здесь происходит не так. Вот мое заявление:Mysql Select Statement не работает

SELECT DISTINCT `county`, COUNT(*) 
FROM `ips` 
WHERE `county` != 'NULL' AND `county` != '' AND 
EXISTS (SELECT * FROM `pages` 
WHERE (`timestamp` BETWEEN FROM_UNIXTIME(?) AND FROM_UNIXTIME(?))) 
GROUP BY `county` 

Я ожидаю, что результаты быть что-то вроде:

County | Number 
Some county | 42 
Other county | 27 

Мои страницы таблица имеет метку каждый раз, когда страница просматривается пользователем, так что если они просматривается страница между датой, выбрано графство из таблицы IP, а число этого общего округа заполняется цифрой. Я использую PDO, и я пропускаю в два раза, что использовал strtotime().

Я в настоящее время застрял. Вся помощь предоставляется. Надеюсь, это не какая-то глупая небольшая ошибка, которую я забыл.

+1

Какой у вас выход? – rjv

+0

Я получаю пустой набор. Временные метки верны. Я использую год назад и сегодня, и есть тысячи строк. Я что-то упускаю, или что-то не так. Я просто не уверен. – user1464971

+0

'NULL' не равно ** ничего ** (включая другой' NULL'). –

ответ

1

Вы не можете сравнить null с !=, который вам нужно использовать, не является нулевым.

SELECT `county`, COUNT(*) 
FROM `ips` 
WHERE `county` IS NOT NULL AND `county` != '' AND 
EXISTS (SELECT 1 FROM `pages` 
     WHERE (`timestamp` BETWEEN FROM_UNIXTIME(?) AND FROM_UNIXTIME(?))) 
GROUP BY `county` 
+0

'DISTINCT' вряд ли понадобится, когда' GROUP'ed 'BY' то же самое. –

+0

Да, вы правы. это не нужно. – SMA

+0

Еще один: в запросе 'EXISTS' нет смысла выводить какие-либо поля' EXISTS (SELECT 1 FROM ...) 'достаточно. –