2015-11-19 4 views
0

Привет У меня есть большая база данных, состоящая из 100 + таблиц. У меня есть 3 таблицы с именем auth_group (id и group_name), auth_permission (id и имя_домена) и auth_group_permission (ассоциативная таблица с двумя этими таблицами) состоит из полей id, group_id и permission_id. Внутри таблицы auth_group есть много групп, и каждая группа auth_group может иметь много разрешений. Некоторые группы могут иметь те же права, что и другие группы. Мне нужно было создать лист excel, который contains Group and permission, if same permissions are coming for different groups include in both the group rows. Мне нужно было создать запрос, который возвращает A list of groups and their corresponding permissions grouped together. Пример:Как выполнить запрос mySQL, возвращающий уникальные значения из разных таблиц

Managers : can create record 
      can delete record 
      etc. 
Engineer : create data 
      delete data 

Я пробовал следующий запрос, но не работал как подвергнутый.

select distinct G.name, P.name from auth_group G, auth_permission P, auth_group_permission GP where G.id = GP.group_id AND P.id = GP.permission_id LIKE G.name LIKE 'BIG_RA_%'

Любая идея, ребята? Заранее спасибо.

+0

"100+ таблицы" Такого рода проблемы является иногда симптомом плохого дизайна – Strawberry

ответ

0

Вы можете попробовать что-то вроде этого.

SELECT G.name, 
    GROUP_CONCAT(P.name) 
FROM auth_group_permission GP 
INNER JOIN auth_group G ON G.id = GP.group_id 
INNER JOIN auth_permission P ON P.id = GP.permission_id 
WHERE G.name LIKE 'BIG_RA_%' 
GROUP BY G.name 

Надеюсь, это поможет.

+0

Попробованная 'ВЫБОР G.name, GROUP_CONCAT (P.name) ОТ auth_group G INNER JOIN auth_permission Р О P.id = GP.permission_id INNER JOIN auth_group_permissions GP ON G.id = GP.group_id WHERE G.name LIKE 'BIG_RA_%' GROUP BY G.name', но возвратил ошибку как «Ошибка в запросе: Неизвестный столбец« GP.permission_id »в разделе« on » '' – vellattukudy

+0

О, я перестроил JOINS, пожалуйста, проверьте .. –

Смежные вопросы