Текущее время: Ср, июл 23 2025, 10:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 07:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, окт 12 2010, 19:57
Сообщения: 14
Сразу хочу оговориться, что вопрос скорее конструктивного-познавательность типа, чем практического, т.к. данную конструкцию запросов не использую, но часто встречаю в старых программах. Я кроме минусов данной конструкции ни чего не вижу положительного, отладка внутри select...endselect часто валится в дамп, время обращения к серверу увеличивается по сравнению с обычным select"ом + не оптимальные условия внутри конструкции, могут привести к еще большей задержке. Хотелось бы узнать какое либо преимущество данной конструкции перед обычным select"ом. Или это все таки атавизм который SAP продолжает поддерживать?
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 07:55 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Ну например:
1. Вытащить только одну запись по не очень четко заданному условию, например бухгалтерский документ с максимальной датой проводки:
Code:
select * from bkpf up to 1 rows
  where ....
  order by budat descending.
endselect.
Понятно что это можно сделать без использования select...endselect, но так достаточно просто и наглядно

2. Обработка больших объемов данных, которые нет смысла целиком тащить во внутренние таблицы - например посчитать какую либо статистику, но запросом это сделать не получится - тогда select...endselect в сочетании с PACKAGE SIZE самое на мой взгляд подходящее решение

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 08:15 
Начинающий
Начинающий

Зарегистрирован:
Вт, окт 12 2010, 19:57
Сообщения: 14
ArmAnn написал:
2. Обработка больших объемов данных, которые нет смысла целиком тащить во внутренние таблицы - например посчитать какую либо статистику, но запросом это сделать не получится - тогда select...endselect в сочетании с PACKAGE SIZE самое на мой взгляд подходящее решение


А разве не проще сделать UPDATE?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 08:30 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
nikolay1880 написал(а):
ArmAnn написал:
2. Обработка больших объемов данных, которые нет смысла целиком тащить во внутренние таблицы - например посчитать какую либо статистику, но запросом это сделать не получится - тогда select...endselect в сочетании с PACKAGE SIZE самое на мой взгляд подходящее решение


А разве не проще сделать UPDATE?

Если возможно апдейтом - то конечно лучше апдейтом. Но бывает что нужно считать какой нибудь сложный показатель, алгоритм расчета которого вы в апдейт (или селект) не запихнете - вот тогда и пригождается select...endselect. Или вот как то видел - раз в месяц по HRным данным считали какую то статистику, причем за все предыдущие периоды. Статистика собиралась раз в месяц, запускалось фоновое задание на ночь - тут нет смысла исхищряться и придумывать сложные решения

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 08:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
nikolay1880 написал(а):
А разве не проще сделать UPDATE?

не уловил связь между UPDATE и SELECT ... ENDSELECT
в SELECT разве можно менять данные в БД?

вобще UPDATE в SAP коварная штука
в силу того, что полно дублирующих полей в связанных таблицах, можно так наапдэйтить :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 08:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
MantiCore1977 написал:
не уловил связь между UPDATE и SELECT ... ENDSELECT

Например проапдейтить Z-поле в BSEG, где будет находиться расчетная сумма - скажем в зимбабвийских долларах по курсу на дату выравнивания, помимо уже имеющихся в документе рублей, долларов и евро

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 10:30 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, окт 21 2006, 20:34
Сообщения: 280
SELECT ... ENDSELECT позволяет заполнить хеш или сортед вн.таблицы с уникальным ключом если записи в таблице БД не с уникальными значениями этих полей. Если использовать обычный SELECT into table то будет дамп - нарушения уникальности


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Чт, май 31 2012, 15:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
ArmAnn написал:
Вытащить только одну запись по не очень четко заданному условию

+1
для использования команд, которые не разрешены вместе с приставкой SINGLE,
например "UP TO 1 ROWS" + "FOR ALL ENTRIES IN"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Пт, июн 01 2012, 08:06 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
А в чем сакральный смысл SINGLE по сравнению с UP TO 1 ROWS?
А UP TO 1 ROWS вроде разрешено вместе с FOR ALL ENTRIES IN.

По сабжу - нет ни единой конструкции с SELECT/ENDSELECT, которую нельзя было бы заменить выборкой во внутреннюю таблицу с последующим циклом по ней. Просто иногда это более геморройно, чем написать SELECT/ENDSELECT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Пт, июн 01 2012, 18:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Sergeant написал(а):
А в чем сакральный смысл SINGLE по сравнению с UP TO 1 ROWS?
А UP TO 1 ROWS вроде разрешено вместе с FOR ALL ENTRIES IN.

В том что FOR ALL ENTRIES IN не разрешено вместе с SINGLE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Пн, июн 04 2012, 17:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Еще удобно для отладки перед тем, как объединить в JOIN.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Вт, июн 05 2012, 11:13 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
troy написал(а):
Sergeant написал(а):
А в чем сакральный смысл SINGLE по сравнению с UP TO 1 ROWS?
А UP TO 1 ROWS вроде разрешено вместе с FOR ALL ENTRIES IN.

В том что FOR ALL ENTRIES IN не разрешено вместе с SINGLE


Так я ведь и спрашиваю - в чем разница между SINGLE и UP TO 1 ROWS, которая вроде разрешена?
Может я не знаю чего.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Вт, июн 05 2012, 11:39 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Sergeant написал(а):
Так я ведь и спрашиваю - в чем разница между SINGLE и UP TO 1 ROWS, которая вроде разрешена?
Может я не знаю чего.

select single чуть короче - у вас нет закрывающего endselect :)
По поводу разницы быстродействии/нагрузке на БД - ИМХО никакой разницы, select single можно просто считать упрощенной формой записи select ... up to 1 rows .... endselect

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Вт, июн 05 2012, 11:53 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Если в условии where с select single не задан полный ключ таблицы, расширенная проверка выдает предупреждение и рекомендацию заменить конструкцию на UP TO 1 ROWS. Видимо select single предполагается применять когда вы точно уверены, что найдется не более одной строки, а UP TO 1 ROWS когда выбираете первую строку из множества


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT ... ENDSELECT
СообщениеДобавлено: Ср, июн 06 2012, 08:40 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 28 2011, 13:20
Сообщения: 35
Удобно брать строки начиная с заданной:
Code:
  select * from ekko into corresponding fields of
                                         ln_ekko up to upto rows
     where
               bedat in  s_edat.
    if sy-dbcnt > skip.                  "Для выборки с заданной записи
      append ln_ekko to lt_ekko.
    endif.
  endselect.


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

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


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

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


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

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