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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot], Google [Bot]


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

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