У меня есть запрос, в котором мне нужно выбрать последние 25 записей в моей базе данных, но в обратном порядке результатов этого выбора.
Я придумал:
SELECT indexID, datetime, temperature FROM dataB WHERE userID="4236" ORDER BY indexID DESC, datetime ASC LIMIT 25
Но я все еще получаю результаты в хронологическом порядке, начиная с самых новых, но я хочу, чтобы хронологические самые старые были самыми новыми в этих 25 самых новых. Я использую PHP pg_fetch_row () и создание объединенной строки с результатами и подача ее в график Morris.js, где мои данные отображаются в обратном порядке из-за этого запроса.
Как мне отменить результаты запроса?
Вы должны попробовать это, сначала получить данные в порядке убывания, а затем использовать их как временную таблицу и снова выбрать в порядке возрастания.
SELECT indexID, datetime, temperature FROM (SELECT indexID, datetime, temperature FROM dataB WHERE userID="4236" ORDER BY indexID DESC LIMIT 25) temp order by indexID ASC
Вместо того, чтобы помещать результаты непосредственно в строку, загрузите их в массив. Когда массив заполнен, используйте array_reverse
Функция, чтобы изменить порядок элементов в массиве. Теперь вы можете построить свою строку и передать данные на график Морриса.
Документация: http://php.net/manual/ro/function.array-reverse.php
Попробуйте добавить смещение вместе с лимитом на ваш запрос. Ниже приведен пример смещения, которое в основном получает общее количество строк, соответствующих вашему запросу, и вычитает из него 25, чтобы сместить вас, чтобы начать с «25-й последней» записи, которая соответствует вашему запросу:
SELECT indexID, datetime, temperature
FROM dataB WHERE userID="4236"ORDER BY indexID DESC, datetime ASC
LIMIT (( SELECT COUNT(indexID) FROM dataB WHERE userID="4236" )-25), 25;