Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Запрос на выборку   Найти похожие ветки 

 
S@shka ©   (2004-10-12 17:16) [0]

Как действовать в таких случаях??
Есть набор данных
ID_C    VALUE_C    TIME_C
 50       1        12.04.04 11:51
 50       2        12.04.04 11:52
 53       0        12.04.04 11:08
 54       10       12.04.04 11:10
 54       8        12.04.04 11:58
-------------------------------------------------
Необходимо выбрать по каждому ID_C значение Value_C которому соответствует максимальное TIME_C
Вариант 1:
for
  select ID_C, max(TIME_C) from TABLE
  group by ID_C
  into :I, :T
do begin
    select VALUE_C from TABLE
    where ID_C = :I and TIME_C = :T
    suspend;
  end

Вариант 2:
  есть такая штука
   for
  select ID_C, max(TIME_C) from TABLE
  group by ID_C
  into :I, :T
  as cursor tmpcursor  // !!!!!
do begin
    select VALUE_C from TABLE
    where current of tmpcursor   // НО ПОХОЖЕ в SELECT использовать это нельзя :(((
    suspend;
  end

А как лучше такого рода задачи решаются ????
Заранее спасибо


 
Romkin ©   (2004-10-12 17:26) [1]

Первым вариантом :))
В идеале, если скорости не хватает, можно сделать денормализацию: сделать таблицу, уже содержащую нужные VALUE_C для каждого ID_C (оба поля - первичный ключ), и управлять ею триггерами на исходной таблице.
Вообще-то что-то мне говорит, что VALUE_C здесь лучше были бы не окончательным значением, а дельтой, чтобы вместо max считать sum


 
Johnmen ©   (2004-10-12 17:26) [2]

SELECT *
FROM Table T1
WHERE T1.TIME_C=(SELECT MAX(T2.TIME_C)
                FROM Table T2 WHERE T2.ID_C=T1.ID_C)


 
S@shka ©   (2004-10-12 23:20) [3]

To Johnmen
Это конечно да, но
на 10000 записей
при неидексированной таблице 100 000 000 чтений
в противовес варианту 1      117 000 чтений


 
Johnmen ©   (2004-10-12 23:56) [4]

>S@shka ©

"Ну что тебе сказать про Сахалин?" (c)

>Как действовать в таких случаях??
>А как лучше такого рода задачи решаются ????

Точно не так: "...неидексированной таблице..." !
И почему беспокоит кол-во чтений? Скорость? Т.е.борьба за неё с пом.ХП, а не индексов?
ЧуднО...:)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.037 c
1-1098694044
Alibaba
2004-10-25 12:47
2004.11.14
TListBox


1-1099130123
Artemiy2004
2004-10-30 13:55
2004.11.14
Как скопировать небольшую часть картинки в новый битмап?


3-1097829624
Пуртик
2004-10-15 12:40
2004.11.14
Как правильно сгенерить строку SQL?


14-1098516040
SteelMan
2004-10-23 11:20
2004.11.14
Посоветуйте компонент


14-1099036914
Baks
2004-10-29 12:01
2004.11.14
Мастера подскажите, помогите чайнику...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский