Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор последних значений курса валют / 13 сообщений из 13, страница 1 из 1
24.12.2015, 11:48:47
    #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
24.12.2015, 11:51:58
    #39136918
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор последних значений курса валют
авторВыбор последних значенийприкреплённые темы? не, не слышал...
FAQ: Выборка первой/последней записи в группах
...
Рейтинг: 0 / 0
24.12.2015, 11:52:26
    #39136919
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор последних значений курса валют
antonv,

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

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

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

Если бы табличка-справочник была, то можно было бы существенно улучшить быстродействие.
...
Рейтинг: 0 / 0
24.12.2015, 13:09:21
    #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
24.12.2015, 14:45:33
    #39137201
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор последних значений курса валют
antonv,

ну таблица небольшая, используйте "хинтик" вам же ссылку дали вот здесь от яростного меча
...
Рейтинг: 0 / 0
24.12.2015, 15:25:11
    #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
25.12.2015, 05:21:33
    #39137753
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор последних значений курса валют
antonvВобщем, жаль, что простым селектом нельзя решить наипростейшую задачу.Задача - простая, но и селект простой. Это вам он кажется сложным :)
...
Рейтинг: 0 / 0
07.01.2016, 05:00:12
    #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
07.01.2016, 05:38:56
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор последних значений курса валют / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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