Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2014, 14:22   #11
Dr_Jakero
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Как это две родительские роли? У вас там граф, что ли?
Я наверное некорректно выразился).
Я имел ввиду, что "Пользователь УРКБ" входит в "АФСЗ", а он всвою очередь входит в Модуль "Документооборот".
Dr_Jakero вне форума Ответить с цитированием
Старый 26.11.2014, 15:02   #12
Dr_Jakero
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 12
По умолчанию

Подредактировал запрос. В таком виде выдает то что надо, если запускать с параметром для конкретного юзера (будет выдавать только одну запись, для ID юзера, который передать как параметр)
Но никак не могу взять в толк как правильно a.ID передавать во вложенный запрос.

PHP код:
SELECT a.NAME,
       
b.memberOf,
       
c.memberall
FROM v_security_user a
,
     
v_security_group vsg,
     (
SELECT sm.member_idreplace(concatenate(ss.name),';','; ')  memberOf
      FROM fp_security_subject ss
fp_security_member sm
      WHERE ss
.id sm.group_id
      GROUP BY sm
.member_idb, --memberof
        
    
(SELECT fsm.member_idreplace(concatenate(fss.name),';','; ')  memberall --memberall
      FROM fp_security_subject fss
fp_security_member fsm
      WHERE fss
.id in (select c.id
                       From v_security_group sg
,
                            (
Select fsm.member_idfss.name memberoffss.id id 
                             From fp_security_subject fss
fp_security_member fsm 
                              where fss
.id fsm.group_id
                       where sg
.ID IN (SELECT d.id 
                                      FROM v_security_user vsa
,
                                           (
SELECT fsm.member_idffs.id
                                            FROM fp_security_subject ffs
fp_security_member fsm 
                                            WHERE ffs
.id fsm.group_id
                                     WHERE vsa
.ID a.ID And vsa.ID d.member_id(+)) --ЗДЕСЬ ОШИБКА!
                       and 
sg.ID c.member_id(+))
       
GROUP BY fsm.member_id
WHERE a
.ID b.member_id and vsg.ID c.member_id 
Dr_Jakero вне форума Ответить с цитированием
Старый 28.11.2014, 10:26   #13
Dr_Jakero
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 12
По умолчанию

Наконец-то добил этот запрос))
Кому интересно, вот правильный вариант запроса:
PHP код:
SELECT a.ID,
       
a.NAME,      
      (
SELECT replace(concatenate(ss.name),';','; ')
      
FROM fp_security_subject ssfp_security_member sm
      WHERE a
.ID sm.member_id and ss.id sm.group_id
      
memberOf,
        
      (
SELECT replace(concatenate(vsg.name),';','; '
      
FROM v_security_group vsg
      WHERE vsg
.id in (select c.id
                       From v_security_group sg
,
                            (
Select fsm.member_idfss.name memberoffss.id id 
                             From fp_security_subject fss
fp_security_member fsm 
                              where fss
.id fsm.group_id
                       where sg
.ID IN (SELECT d.id 
                                      FROM v_security_user vsa
,
                                           (
SELECT fsm.member_idffs.id
                                            FROM fp_security_subject ffs
fp_security_member fsm 
                                            WHERE ffs
.id fsm.group_idd  
                                     WHERE vsa
.ID a.ID And vsa.ID d.member_id)
                       and 
sg.ID c.member_id(+))
              or 
vsg.id in 
                           
SELECT dd.id 
                             FROM v_security_user vsu
,
                                 (
SELECT smm.member_idsss.id
                                  FROM fp_security_subject sss
fp_security_member smm 
                                  WHERE sss
.id smm.group_iddd 
                             WHERE vsu
.ID a.ID And vsu.ID dd.member_id(+)        
                       )) 
allmember           
            
FROM v_security_user a

Результат:

ID |NAME |MEMBEROF |ALLMEMBER
----------------------------------------------
1000006300| ULTRA | Администраторы; Все пользователи | Администраторы; Все пользователи
1200039438| TRAVINA | Специалист ЗП; Все пользователи | Специалист ЗП; модуль "Документооборот"; Все пользователи
1300000492| LARIONOV | Все пользователи; Диспетчер Андеррайтера; | Все пользователи; Диспетчер Андеррайтера; Андеррайтер; Модуль"Документооборот"
Dr_Jakero вне форума Ответить с цитированием
Старый 01.12.2014, 10:37   #14
Dr_Jakero
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 12
По умолчанию

А вот еще один вариант, на писан с точки зрения корректности более верно и гораздо короче, чем предыдущий вариант:

PHP код:
SELECT a.ID,
       
a.NAME,
       
b.memberOF,
      (
SELECT replace(concatenate(vsg.name),';','; '
      
FROM v_security_group vsg
      where VSG
.ID in  (SELECT FPSM.GROUP_ID 
                        FROM fp_security_member fpsm
                        CONNECT BY PRIOR FPSM
.GROUP_ID FPSM.MEMBER_ID
                        START WITH FPSM
.MEMBER_ID a.id)
       ) 
allmember        
from v_security_user a
,
    (
select b.member_idreplace(concatenate(a.name),';','; ')  memberOf
          from fp_security_subject a
fp_security_member b
         where a
.id b.group_id
         group by b
.member_idb
where a
.ID b.member_id(+); 
Dr_Jakero вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сложный запрос Deeller БД в Delphi 3 29.04.2011 19:25
Сложный запрос templton Microsoft Office Access 8 21.04.2011 13:43
Сложный запрос Kostya777 Microsoft Office Access 1 07.12.2010 12:02
Сложный запрос nikolai_P SQL, базы данных 2 01.04.2010 01:21
Помогите создать сложный запрос (или как писать код для столбца запроса) kukuanna Microsoft Office Access 0 24.07.2009 14:10