powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / sql-запрос
24 сообщений из 24, страница 1 из 1
sql-запрос
    #35745016
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чего то никак не получается составить запрос, возможно виной всему нг, кто знает :)
суть в следующем: есть таблица в которую записываются оценки, с датой проставления этой оценки, так вот, как должен выглядеть запрос, чтобы выводились оценки только с максимальной датой (последней). заранее всем спасибо.
...
Рейтинг: 0 / 0
sql-запрос
    #35745112
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachest,

Не очень понятно, что вы хотите.
Навскидку:
Код: plaintext
1.
 select Дата,Оценка from Таблица
 where Дата= (select max(Дата) from Таблица)
или
Код: plaintext
1.
 select Дата,Оценка from Таблица t1
 where Дата= (select max(Дата) from Таблица t2 where t1.Оценка =t2.Оценка )

Или таблицу и пример данных в студию!
...
Рейтинг: 0 / 0
sql-запрос
    #35745353
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице есть три столбца
1) id ученика
2) оценка
3) дата проставления
...
Рейтинг: 0 / 0
sql-запрос
    #35745424
LcF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 cachest По моему гражданин Александр Коблов навскидку дал вам правильный ответ.
Александр КобловНе очень понятно, что вы хотите.
Навскидку:

select Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)
...
Рейтинг: 0 / 0
sql-запрос
    #35745545
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LcF2 cachest По моему гражданин Александр Коблов навскидку дал вам правильный ответ.
Александр КобловНе очень понятно, что вы хотите.
Навскидку:

select Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)

Ага так и есть, спасибо!
...
Рейтинг: 0 / 0
sql-запрос
    #35747160
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно как нибудь в условии where поставить не "и", а "или"?
...
Рейтинг: 0 / 0
sql-запрос
    #35747178
LcF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант в секции where вместо условия "И" поставить "OR"
...
Рейтинг: 0 / 0
sql-запрос
    #35770881
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно оптимизировать вот такой запрос
авторselect Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)
если данных очень много, то и выполняется он соответсвенно. А можно на поле "дата" проставить индексы какие нибудь? Если да, то буду очень благодарен за варианты.
...
Рейтинг: 0 / 0
sql-запрос
    #35770888
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachestКак можно оптимизировать вот такой запрос
авторselect Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)
если данных очень много, то и выполняется он соответсвенно. А можно на поле "дата" проставить индексы какие нибудь? Если да, то буду очень благодарен за варианты.

Можете создать "битовый" индекс сразу на 2 поля на Дата и Оценка:
Index IDXDateRating On (Дата,Оценка) [type = bitmap];
...
Рейтинг: 0 / 0
sql-запрос
    #35770896
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может вопрос покажется смешным, но как он работает или как использовать этот индекс?
...
Рейтинг: 0 / 0
sql-запрос
    #35770928
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachestКак можно оптимизировать вот такой запрос
Код: plaintext
1.
select Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)

Как вариант вначале вычислить эту самую максимальную дату, а потом искать все остальное...
...
Рейтинг: 0 / 0
sql-запрос
    #35770930
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachestкак он работает
Побитово.
cachestкак использовать этот индекс?
Его должен использовать кащейский оптимизатор запросов. Т.е. ты просто будеш пользоваться его т.с. плодами.
...
Рейтинг: 0 / 0
sql-запрос
    #35770931
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsacachestКак можно оптимизировать вот такой запрос
Код: plaintext
1.
select Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)

Как вариант вначале вычислить эту самую максимальную дату, а потом искать все остальное...

Такой вариант действительно существовал, первоначально я так и делал. Но в итоге на обработку страницы уходило около 20с, пришлось отказаться :)
...
Рейтинг: 0 / 0
sql-запрос
    #35770942
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachest , т.е. еще дольше?
...
Рейтинг: 0 / 0
sql-запрос
    #35770992
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachestМожет вопрос покажется смешным, но как он работает или как использовать этот индекс?
После того как вы создадите индекс, добавив его в описание класса из Студии, Каше при SQL запросах
автоматически будет его использовать.
В глобале значения битовых карт уже будут упорядочиваться по максимальной дате, соответственно запрос SELECT MAX(date) FROM Table будет летать. Выборка значений дата - оценка также будет происходить из этого индекса.
Единственный момент. После того как вы добавили индекс в описание класса Вам необходимо сделать перестройку индексов для данного класса.
d ##class(MyClass).%PurgeIndices() - удаляет старые индексы
d ##class(MyClass).%BuildIndices() - добавляет новые
...
Рейтинг: 0 / 0
sql-запрос
    #35771024
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=Dimon=,

Можно обойтись и одним "простым" индексом:
Index IDXDate On (date) [Type = index];

В общем идея понятна, можете попробовать различные варианты.
...
Рейтинг: 0 / 0
sql-запрос
    #35771034
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa cachest , т.е. еще дольше?
дольше чего?

=Dimon=, спасибо, теперь хоть немного стала проясняться ситуация :)
...
Рейтинг: 0 / 0
sql-запрос
    #35771041
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachestдольше чего?
Это

Код: plaintext
1.
select Дата,Оценка from Таблица
where Дата= :Date

выполняется дольше этого

Код: plaintext
1.
select Дата,Оценка from Таблица
where Дата= (select max(Дата) from Таблица)

?
...
Рейтинг: 0 / 0
sql-запрос
    #35771047
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
основная задержка будет происходить именно на выборке максимальной даты.
...
Рейтинг: 0 / 0
sql-запрос
    #35771049
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно же нет, но если вот это
Код: plaintext
1.
select Дата,Оценка from Таблица
where Дата= :Date
выполнять совместно (в одном методе) с
Код: plaintext
select max(Дата) into :Date from Таблица
тогда да.
...
Рейтинг: 0 / 0
sql-запрос
    #35771089
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachest,

Советую заменить
select max(Дата) into :Date from Таблица
на
SELECT TOP 1 Дата INTO :Date FROM ТаблицаORDER BY Дата DESC
...
Рейтинг: 0 / 0
sql-запрос
    #35776571
cachest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли как нибудь реализовать вот такую задачу. Пользователь указывает дату и если в таблице нет результатов с выбранной датой, то выводятся результаты с ближайшей к указанной.
...
Рейтинг: 0 / 0
sql-запрос
    #35776578
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется одним запросом это будет "не рентабельно"...

А так будет нечто:

Select на дату
UNION
Select если в первом нет записей - искать все меньше даты, но выводить только с максимальной из найденых

Что-то в этом роде...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
sql-запрос
    #35776609
Фотография borin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cachest,

ну или select top <сколько_последних_оценок_надо> * from table order by <дата_время> desc

это если нужны последние оценки необязательно с одной и той же датой
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / sql-запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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