Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск пользователя по опред. признакам 
V
    Опции темы
lynx13
Дата 4.4.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



А как мне  выявить пользователей с определенным на бором ролей:
 Например, есть пять пользователей,обладающих такими ролями..

1. view
    connect
    
2. view
    connect
    dba
    olap

3. view
    dba

4. connect
    dba

5.view
   connect

так вот, мне надо найти пользователей, у которых только роли view и connect, т.е. 1 и 5  
PM MAIL   Вверх
Vas
Дата 5.4.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Из системных таблиц и выбирай
USER_ROLE_PRIVS
USER_SYS_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
lynx13
Дата 7.4.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



А как мне сам запрос построить, чтобы туда не вошли пользователи 2,3,4...с такими же ролями, как и у 1,5???
PM MAIL   Вверх
lynx13
Дата 8.4.2008, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Ну так что там на счет запроса???
PM MAIL   Вверх
Vas
Дата 8.4.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Глупое условие, вообще придется наверное читать про аналитические функции ( это в сторону форума пооракулю), а если тупо делать то можно так
Код

select grantee, count(*) from dba_role_privs
where granted_role='VIEW' or granted_role='CONNECT'
group by grantee
having count(*)=2

По условию две роли, если ролей больше или меньше отсекаем smile


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
lynx13
Дата 8.4.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Спосибо!! smile 

Но у меня в таком варианте получается, что , если ролей больше, то grantee все равно выводится, если меньше то все нормально  smile 
PM MAIL   Вверх
Vas
Дата 8.4.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Да косяк в запросе, он и откинет только тех у кого ролей меньше, ща подумаем smile


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
lynx13
Дата 9.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
lynx13
Дата 16.4.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Ну что там?? Никак??да?
PM MAIL   Вверх
lynx13
Дата 28.4.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



У меня получилось  smile 
Я написала запрос, ожидала в принципе от него другого результата, но к моему удивлению, он ищет то, что нужно... Сама не понемаю почему smile 

Код

select * from dba_role_privs
where not(grantee IN (select grantee from dba_role_privs where not((granted_role = 'CONNECT') OR (granted_role = 'VIEW') ) ))


Добавлено через 1 минуту и 27 секунд
Может, кто-нить обяъяснит, что я написала ???smile 
PM MAIL   Вверх
lynx13
Дата 28.4.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Но тогда он выводит всех, у кого меньше ролей, чем указано :(((

Добавлено через 23 секунды
Как мне надоело все smile 
PM MAIL   Вверх
lynx13
Дата 28.4.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



О теперь кажись все гут!! smile 
Код

select grantee, count(*) from dba_role_privs
where (not(grantee IN (select grantee from dba_role_privs where not(granted_role in ('CONNECT','VIEW','DBA') )))) and (grantee in (select grantee from dba_role_privs
where granted_role='VIEW' or granted_role='CONNECT' or granted_role='DBA'))
group by grantee
having count(*)=3

 smile 
PM MAIL   Вверх
DimW
Дата 28.4.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



как вариант, хотя тоже не без изврата:
Код

select distinct grantee
  from (select t.grantee
              ,t.granted_role
              ,count(*) over(partition by t.grantee) qnt
          from dba_role_privs t)
 where granted_role in ('CONNECT', 'VIEW')
   and qnt = 2

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.