birds написал(а):
в условиях просят делать выборку только тех данных, на которые есть полномочия. т.е. если Юзер не задал сектор. а у него полномочия только на один сектор, его ему и показать, предупредив, что выборка будет обрезана (требования не пользователя, а начальника разработки)
Ну если предупредить пользователя - то другое дело

Можно попробовать другой метод: сначала выбрать все данные во внутреннюю таблицу, а затем отсортировать ее по полям объекта полномочий и по каждому сочетанию проверять объект полномочий. Если проверка неуспешна - удаляем все записи с таким ключом и переходим к следующему сочетанию.
Удаление записей лучше делать по индексам (начало сочетания полей, конец сочетания полей), а не по WHERE

Плюсы:
-Не нужен FOR ALL ENTRIES
-Не нужно проверять каждое сочетание из TVTA, проверка происходит только по выбранным данным
Минусы:
-Большый объем передаваемых данных из БД
-При очень ограниченных или отсутствующих полномочиях выборка все равно будет сделана