Текущее время: Чт, май 15 2025, 13:33

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Выбор минимального значения поля
СообщениеДобавлено: Вт, сен 06 2005, 06:58 
Гость
Уважаемые, подскажите как выбрать минимальное значение поля из внутренней таблицы :roll:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 07:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
SORT itab ASCENDING BY field
READ itab into wa index 1


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 07:27 
Гость
На второй строчке выдает ошибку синтаксиса :?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 07:34 
Гость
types: begin of ir,
field1,
field2,
end of ir.

data: itab type table of ir,
wa like line of itab.

* Fill itab
...

* Search min value field FIELD1
SORT itab ASCENDING BY field1.
READ table itab into wa index 1.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 09:43 
Гость
А как-нибудь через функцию min оператора select?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 10:28 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
:shock: select уже работает с внутренними таблицами? :roll:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 10:40 
Гость
Я не пояснила, сразу сделать выборку из прозрачной таблицы select single


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 14:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
select single field from tab
order by field.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 14:59 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
select min( field) from xxx into mmm .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 17:42 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Либо, если нужно выбрать данные по ключу с минимальным значением, можно так:
Code:
select f1, f2, ..., fn from tab
where ...
order by [key].
  ...
  exit.
endselect.

Это избавит от необходимости в двух селектах:
Code:
select single min(fname) into varname from tab
where ...
select f1...fn from tab
where fname = varname.

Кроме того, MIN() по составному ключу не работает - в этом случае придется юзать ORDER BY.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 18:08 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Так и предсталяю картину маслом: RoadRunner для поиска мин. значения поля сортирует таблицу не по первичному и не по вторичным ключам на сервере БД, например, в 10 млн. записей... :D
Учитывая сложность алгоритма сортировки в самом удачном случае - n*log2(n) и особенность сортировки больших таблиц - вся информация наверняка не закэшируется и будет с переменным успехом подгружаться с винчестера...
В общем, RoadRunner, ты - "мечта всей жизни" любого системного администратора. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 06 2005, 18:19 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
RoadRunner написал:
Либо, если нужно выбрать данные по ключу с минимальным значением, можно так:
Это избавит от необходимости в двух селектах:
Кроме того, MIN() по составному ключу не работает - в этом случае придется юзать ORDER BY.

Два селекта и не нужно - подзапросы еще никто не отменял.
Немного фантазии и функцию min можно приспособить и для составного ключа (NativeSQL я в расчет не беру). :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 07 2005, 08:22 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Дмитрий написал:
Немного фантазии и функцию min можно приспособить и для составного ключа (NativeSQL я в расчет не беру). :)

Поделитесь секретом с "мечтой сисадмина"! :) Буду признателен. А про объем выборки не подумал, виноват... :oops:

З.Ы. Индекс по вторичному ключу может иногда помочь... Но согласен, что это неоправданно, поэтому иногда - курсивом.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 07 2005, 08:59 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Все просто. :) Минимум по ключу из двух полей, f1 и f2 например:
1. select min( f1 ) from tab into min_f1.
2. select min( f2 ) from tab into min_f2 where f1 = min_f1.
Это можно оформить и в виде 1 запроса с подзапросом:
select min( f1 ) min( f2 ) from tab into (min_f1,min_f2)
where f1 = ( select min( f1 ) from tab ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 07 2005, 09:15 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
А как будет работать ф-ция MIN? Не будет ли это громоздко? Ведь в случае не-числового поля, коими, бывает, являются даже "числовые" саповские поля, операция поиска без индекса будет небыстрой... А ANLN1 - как раз нечисловое поле.

З.Ы. Прошу прощения за очередной оффтоп, но как при использовании native sql добиться высокой производительности? Когда идет цикл по внутренней таблице (имею в виду pl/sql) с заполнением переменных abap, то много времени теряется на переключение между sql- и abap-областями памяти. Кто-то из наших даже замерял производительность - натив уступал, хотя сам по себе запрос был изящней, проще и, по идее, быстрее... Нет ли чего-то, вроде into table для передачи данных из натива в абап?

З.З.Ы. А если ключей больше 2-х? Нужен 3-й подзапрос, получается? :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB