Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Помогите с запросом.. изломал голову.
Исходные данные такие:
есть два солбца, date и id.
id это обычный id с автоинкрементов, date Это проста дата.
Логика работы в том, что запись можно добавить в любую дату. Если представить себе хронологию ведения записей по датам, то можно упорядочить сначала всё по дате, потом в рамках каждой даты по id. В данном случае, иллюстрация по дате и id по убыванию:
Теперь вопрос.
Я, имея некий id на руках, хочу получить "предыдущий".
ну, то есть, если я имею 3, то получить надо 6. Если 4, то 3.
Полдня просидел, чё-то не получается (
главоболя.
Отредактированно inmerdorm (09.08.2017 01:01:15)
Неактивен
Отредактированно klow (09.08.2017 07:46:44)
Неактивен
klow,
так не покатит, потому что условие AND id < :ID будет выбирать только те id, которые меньше данной цифры. А они могут быть и больше. Например, для "3" результат должен быть "6", а этот код выдаёт "2".
Неактивен
Собственно, давайте не упираться вот так в задачу, давайте попробуем помыслить широко, исходя из условий и задач заказчика.
Суть дела: юзеры накидывают события за разные даты вразнобой. Поэтому на каждую дату там рандомный набор айдишников.
После этого они задаются вопросом о том, чтобы восстановить хронологию событий по датам. Суть хронологии событий такова, что
порядок событий в рамках каждой даты определяется самим айдишником (чем больше айдишник, тем позже произошло событие в рамках этой даты). Поэтому, мы считаем, что событие с id=6 за 9 число произошло раньше, чем событие id=3 за 10число.
Возможно, здесь стоит задаться вопросом о том, как эффективно организовать такую таблицу и занесение данных в неё, чтобы потом легко ответить на вопросы: -какое событие является предыдущим, а какое - последующим? Ставить в отдельное поле таймстемп для событий смысла не имеет, т.к. это будет, по сути, дублем поля id, только цифр больше.
Пока мне это не понятно как организовать.
Отредактированно inmerdorm (09.08.2017 12:23:03)
Неактивен
А почему бы Вам не хранить время с точностью до секунды? timestamp/datetime в помощь. Так будет проще.
Неактивен
deadka написал:
А почему бы Вам не хранить время с точностью до секунды? timestamp/datetime в помощь. Так будет проще.
Дальше что?
очерёдность теймстемпов идентична очерёдности айдишников. Это не даёт ничего нового.
Неактивен
>Я, имея некий id на руках, хочу получить "предыдущий". Ну, то есть, если я имею 3, то получить надо 6. Если 4, то 3.
Мы можем взять предыдущий запись, соответствующую предыдущему timestamp? Приведите набор данных с timestamp и результат, который хотите получить.
Неактивен
deadka написал:
>Я, имея некий id на руках, хочу получить "предыдущий". Ну, то есть, если я имею 3, то получить надо 6. Если 4, то 3.
Мы можем взять предыдущий запись, соответствующую предыдущему timestamp?
Нет, т.к. это не будет соответствовать логике задачи.
Неактивен
Короче, я так понимаю, что просто нужно получить этот массив и в пхп далее изгаляться.
Неактивен
Попробуйте для начала сформулировать алгоритм.
Отредактированно klow (10.08.2017 11:47:42)
Неактивен