powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка полей по ближайшей дате
2 сообщений из 2, страница 1 из 1
Выборка полей по ближайшей дате
    #39362329
z-aec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дано: примерная таблица. Простоты ради привожу наглядное время и рандомные value
timevalue10:00310:05710:10810:151

Поле time заполнено с интервалом 5 минут, но не гарантируется, что этот интервал будет всегда выдерживаться (например, скрипт по крону отвалился и не вставил ничего или отработал на минуту позже).

Задача: для заданного списка time (например, 10:02, 10:14) получить соответствующие value, соответствующие ближайшей предыдущей временной отметке (т.е. для данного случая на 10:00, 10:10 и в результате будет 3, 8).

Вопрос: как это оптимальнее всего сделать с учётом того, что список может быть большим? Придумал костыльное решение типа такого, но что-то мне подсказывает, что это не самый хороший вариант.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
    h.value,
    t.time,
    t.real_time
FROM history h
JOIN (
SELECT value, MAX(time) AS real_time, :time1 as time
FROM history h
WHERE ts <= :time1
UNION 
SELECT value, MAX(time) AS real_time, :time2 as time
FROM history h
WHERE ts <= :time2
) h.time = t.real_time;



(пример условный, на совпадение имён не обращайте внимания)

Чем плохо: тем, что для большого списка времён запрос разрастается, и, наверное, будет выполняться долго. Возможно, есть какие-то лучшие варианты?
...
Рейтинг: 0 / 0
Выборка полей по ближайшей дате
    #39362391
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT MAX(i.time), t.time
FROM infotable i, timetable t
WHERE i.time < t.time
GROUP BY t.time


А если нужна вся запись - используешь этот код как подзапрос.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка полей по ближайшей дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]