Где ошибка в логике запроса?

Пытаюсь вывести каждую n-нную запись.

Алгоритм такой - узнать сколько всего записей в выборке ($count).
Если их больше 1000, разделить их количество и округлить.
Это число будет означать какую по счету запись выводить.

if ($count>1000) $show_each_record_number=ceil($count/1000); //деление с округлением в большую сторону
$mysqli_request="SELECT * FROM `table` WHERE  `ticker`='Y1' AND id % $show_each_record_number = 1";


Но при таком количестве записей, когда $show_each_record_number=2 или 4 (6,8,10 похоже что всё что кратно 2) запрос возвращает 0 строк. (А без id %... 1800 записей. Т.е. записи то есть.)

Где ошибка в логике запроса?
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
@vyrkmod
Пишу на php. И не стыдно.
Ошибка в логике в том, что id нумерует строки в таблице, а не в выборке. Так что id кратных нужному числу в выборке может и не оказаться. Надо либо выгружать всё и выбирать n-ные строки уже в php, либо создавать временную таблицу и нумеровать в ней, либо клепать несколько запросов с "LIMIT n,1".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вот только запрос у вас должен показать не "каждую вторую запись с тикером Y1", а "все записи с тикером Y1, имеющие нечётные id". Это таки несколько разные вещи. Записей с нечётными id может не быть вообще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы