побитовые операции?

clevel

Новичок
побитовые операции?

есть таблица users:
userid(int)| groupid(int)
1| 1
1|12
1| 3
2| 5
2| 0
надо составит запрос, который бы сделал следующее:
1.для выбранного userid составил бы строку, состоящую из нулей и единиц (бинарный формат)
2.данная строка - массив, по длине - максимальный номер groupid, по дефолту забивается нулями, далее присваиваем элементам этого массива с индексом groupid единицу.
3.переводим данную строку в десятичный формат.
Подскажите, как реализовать (желательно мускулом в один запрос 2 операцию)
 

clevel

Новичок
кто-нибудь может мне в этом помочь? никак не могу понять. как реализавать в мускуле данныю вещь
 

chira

Новичок
Наверно у тебя есть таблица с группами (groups)
Добавь поле BIN_ID INTEGER в котором каждой группе назначь число из ряда степеней двойки.
1,2,4,8,16,32,64,128,256,512,1024 ......
для получения результата используй SQL:
[SQL]select u.userid, bit_or(g.bin_id)
from users u, groups g
where u.groupid=g.id
group by u.userid
[/SQL]
 

clevel

Новичок
у меня несколько иначе...
есть таблица групп, это да!
Но! у меня таблица, где хранятся права доступа для каждой группы к страницам, представляет собой group_id,page_id,dec_rights.
Добавлять еще одно пересечение с таблицей групп при поиске прав не очень хочется :(
 
Сверху