powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор последних значений курса валют
13 сообщений из 13, страница 1 из 1
Выбор последних значений курса валют
    #39136913
antonv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура:
id, cur, val, dt

Пример:
320, RUR, 69, 2015-12-24 10:00:02
319, EUR, 0.9, 2015-12-24 10:00:00
318, RUR, 68, 2015-12-24 09:00:00
317, EUR, 0.8, 2015-12-24 09:00:00
316, RUR, 67, 2015-12-24 08:00:00
315, EUR, 0.7, 2015-12-24 08:00:00
314, GBP, 0.6, 2015-12-24 08:00:00

Подскажите, пожалуйста, как выбрать актуальные курсы?
У меня что-то какие-то монстроидальные запросы получаются, либо не правильно работающие.

Т.е. результат должен быть такой:
320, RUR, 69, 2015-12-24 10:00:02
319, EUR, 0.9, 2015-12-24 10:00:00
314, GBP, 0.6, 2015-12-24 08:00:00
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39136918
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВыбор последних значенийприкреплённые темы? не, не слышал...
FAQ: Выборка первой/последней записи в группах
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39136919
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonv,

В базе существует дополнительная таблица валют (справочник) ?
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39136932
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если возникает необходимость ИСКАТЬ последний/актуальный курс, то какой смысл в существовании и получении в выборке поля ID?
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39136942
antonv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftantonv,

В базе существует дополнительная таблица валют (справочник) ?
Нет, не существует, только эта.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39136957
antonv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЕсли возникает необходимость ИСКАТЬ последний/актуальный курс, то какой смысл в существовании и получении в выборке поля ID?
Существование, полагаю, ничем не мешает. В контексте вопроса, во всяком случае.
А без выборки можно обойтись.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39137026
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonvmiksoftantonv,

В базе существует дополнительная таблица валют (справочник) ?
Нет, не существует, только эта.Тогда, увы, см. FAQ: Выборка первой/последней записи в группах.

Если бы табличка-справочник была, то можно было бы существенно улучшить быстродействие.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39137037
antonv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftantonvпропущено...

Нет, не существует, только эта.Тогда, увы, см. FAQ: Выборка первой/последней записи в группах.

Если бы табличка-справочник была, то можно было бы существенно улучшить быстродействие.
Думаю, что смогу сделать такую таблицу. Т.е. давайте предположим, что она есть. Но ведь тогда как раз и нужно в ту тему из FAQ и привет монстроидальный запрос для простой задачи?

Я-то надеялся обойтись чем-то простеньким, вроде:
Код: sql
1.
SELECT id, cur, val, dt FROM table1 GROUP BY cur ORDER BY id DESC


или
Код: sql
1.
SELECT MAX(id), cur, val, dt FROM table1 GROUP BY cur ORDER BY id DESC


Но, естественно, не прокатило.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39137201
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonv,

ну таблица небольшая, используйте "хинтик" вам же ссылку дали вот здесь от яростного меча
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39137242
antonv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinovantonv,

ну таблица небольшая, используйте "хинтик" вам же ссылку дали вот здесь от яростного меча
Этот метод работает, но именно подобное я и назвал монстроидальным в первом посте.
И табличка-то не маленькая, вобщем-то. Каждый день, каждый час, куча разных валют.

Наверное и правда проще справочник валют завести. Но даже в этом случае решение кажется каким-то неправильным с точки зрения быстродействия.
Получается тоже с вложенными селектами, но хотя бы чуть менее навороченно:

Код: sql
1.
2.
3.
4.
5.
6.
SELECT t2.* 
FROM table2 AS t1 
LEFT JOIN table1 AS t2 ON t2.id = (
	SELECT MAX(id) FROM table1 WHERE vlt = t1.vlt LIMIT 1
	) 
WHERE t2.id IS NOT NULL


Вобщем, жаль, что простым селектом нельзя решить наипростейшую задачу.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39137753
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonvВобщем, жаль, что простым селектом нельзя решить наипростейшую задачу.Задача - простая, но и селект простой. Это вам он кажется сложным :)
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39142932
Artemeey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более интуитивно понятный:

Выбрать последнюю строку для каждого курса.

SELECT t1.* FROM `currents` t1
WHERE t1.`dt` = (SELECT MAX(`dt`) FROM `currents` WHERE `cur` = t1.`cur`)
GROUP BY t1.`cur`

Надо добавить индекс `dt`.
При желании вместо `dt` можно использовать `id`.
...
Рейтинг: 0 / 0
Выбор последних значений курса валют
    #39142935
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtemeeyБолее интуитивно понятный:

Выбрать последнюю строку для каждого курса.

SELECT t1.* FROM `currents` t1
WHERE t1.`dt` = (SELECT MAX(`dt`) FROM `currents` WHERE `cur` = t1.`cur`)
GROUP BY t1.`cur`

Надо добавить индекс `dt`.
При желании вместо `dt` можно использовать `id`.

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


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