Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Битовая логическая операция над агрегацией. / 4 сообщений из 4, страница 1 из 1
15.12.2004, 12:59
    #32828301
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Битовая логическая операция над агрегацией.
ASA9.Нужно в запросе с агрегацией по полю результатом чтобы была логичемкая битовая операция над значениями.
Т.Е что-то типа:
select field1, bitwise_OR(field1)
from table
group by field1
Красивого решения я пока не нашел, очень не хочится городить курсор.
...
Рейтинг: 0 / 0
15.12.2004, 22:23
    #32829364
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Битовая логическая операция над агрегацией.
Мне показалось что имелось ввиду:
select field1, bitwise_OR( field2 )
from table
group by field1

Кроме этого ничего в голову не приходит:
select field1,max(field2&&1)+max(field2&&2)+max(field2&&4)+..
from table
group by field1
...
Рейтинг: 0 / 0
16.12.2004, 10:44
    #32829769
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Битовая логическая операция над агрегацией.
2Iller: Насчет field2 - все верно. Ваше решение, действительно выход, в любом случае, это гораздо лучше чем курсор, который я собрался городить.

2ASCRUS: Есть предложение, которе можно вынести на официальный форум по ASA. Мне кажется, что возможность применения к агрегациям битовых операций вполне полезный функционал. В моем случае, битовая операция над агрегацией мне понадобилась, т.к. битовое поле (в БД, которую я не разрабатывал) определяло права доступа. Соответсвенно агрегация по нему - определяла результирующее право.
...
Рейтинг: 0 / 0
20.12.2004, 19:10
    #32835790
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Битовая логическая операция над агрегацией.
авторбитовое поле (в БД, которую я не разрабатывал) определяло права доступа. Соответсвенно агрегация по нему - определяла результирующее право
может вам это и не поможет, но подобную проблему я решил следующим способом. в процессе определения прав пользователя формируется временная таблица с правами по объектам
create table #perm(
object_id integer not null,
flags integer not null,
);
таблица может содержать несколько строк с одим object_id и разными правами - flags
следующий оператор суммирует права по object_id
update #perm as p set p.flags = p.flags|d.flags from #perm as p,#perm as d where
d.object_id = p.object_id;
теперь все строки с одним object_id имеют одинаковое значение flags равное сумме прав
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Битовая логическая операция над агрегацией. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]