Фильтрация чисел с использованием MySQL - PullRequest
2 голосов
/ 10 декабря 2011

Я выполняю следующий запрос MySQL, чтобы отфильтровать количество объявлений с ценами в определенном диапазоне.

SELECT `listing_id`, `price` FROM (`listings`) 
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5) 
AND `price` > '0' AND `price` < '10000'
ORDER BY `post_timestamp` desc

Проблема: Это не дает никаких результатов, хотя есть строки, в которых столбец цены имеет значения от 0 до 10000.

Теперь следующий запрос SQL возвращает правильные результаты

SELECT `listing_id`, `price` FROM (`listings`) 
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5) 
AND `price` < '10000'
ORDER BY `post_timestamp` desc

Но этот запрос ниже не возвращает результатов !!

SELECT `listing_id`, `price` FROM (`listings`) 
WHERE `post_timestamp` BETWEEN (NOW() - 0 AND NOW() - 5) 
AND `price` > '0'
ORDER BY `post_timestamp` desc

Это действительно смущает меня, интересно, есть ли у кого-нибудь объяснение / решение для этого?

Редактировать Следующий код дает мне результаты!

SELECT `listing_id`, `price` FROM (`listings`) 
WHERE `price` > '0'

Тип поля: int (8)

Удаление кавычек вокруг числовых значений не имеют значения

Ответы [ 5 ]

4 голосов
/ 10 декабря 2011

(я обнаружил, что не понимаю, что это за объяснение),
так, вкратце

Удалите скобку, чтобы: -

WHERE `post_timestamp` BETWEEN NOW() - 0 AND NOW() - 5 //first where clause
AND `price` < '10000'

Это может вернуть ноль совпадений,
поскольку сравнение слишком короткое (сейчас () - 5 секунд)

Для проверки за последние 5 дней

WHERE `post_timestamp` BETWEEN DATE_SUB( NOW(), INTERVAL 5 DAY) AND NOW()
AND `price` < 10000
1 голос
/ 10 декабря 2011

Почему вы рассматриваете price как строку? Я имею в виду, есть кавычки вокруг значений «0» и «1000». Попробуйте удалить их.

EDIT

Попробуйте это и скажите мне, если это работает:

SELECT listing_id, price
FROM listings
WHERE post_timestamp BETWEEN (NOW() - 0) AND (NOW() - 5)
AND price < 10000
ORDER BY post_timestamp desc
1 голос
/ 10 декабря 2011

Я не думаю, что вы хотите заключить в кавычки числовые значения.

0 голосов
/ 10 декабря 2011

Возможно ли, что цена поля будет иметь значение null?

0 голосов
/ 10 декабря 2011

Не видя схемы вашей базы данных, я не могу быть уверен, но вы пытались удалить кавычки вокруг числовых значений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...