Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » MySQL 3.23. Вывих мозга при создании запроса

Ответить
Настройки темы
MySQL 3.23. Вывих мозга при создании запроса
pauluss


Сообщения: n/a

Профиль | Цитировать


Имею хотение натворить красивость, но не имею мозгов. Надеюсь на Ваши.

Суть: Есть юзера. Есть группы(Роли), в которые можно объединять юзеров. Каждый юзер может входить в любое количество групп или не входить ни в одну. Есть куча файлов. Надо прописать права на файлы для юзеров и/или групп.

Натворил таблицы:

users:
поля: id (primary key)
.................

groups:
поля: id (primary key)
.......

usgr: (связи юзеров и групп)
поля: id_user
id_group

files:
поля: id (primary key)
............................

permit_users: (связи файлов с юзерами. Иными словами права юзеров на файл)
поля: id_user
id_file

permit_groups: (связи файлов с группами. Иными словами права групп юзеров на файл)
поля: id_group
id_file

Вопрос: Как одним запросом по id файла определить доступен ли он данному юзеру? (по id юзера)

Отправлено: 18:45, 28-11-2005

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата:
permit_users: (связи файлов с юзерами. Иными словами права юзеров на файл)
поля: id_user
id_file
У вас же есть для этого спец таблица. В чём вопрос?
SELECT * from permit_users WHERE id_file='$file' AND id_user='$user'

-------
Fortes fortuna adiuvat


Отправлено: 01:12, 29-11-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pauluss


Сообщения: n/a

Профиль | Цитировать


vadimiron Юзер может состоять в группе, для которой прописаны разрешения в permit_grops. Я выполняю два запроса:

$res=SELECT permit_group.gr FROM permit_group,usergroup WHERE (permit_group.gr=usergroup.gr) AND (permit_group.file=$file_id) AND (usergroup.us=$userid);

$res2=SELECT user FROM permit_user WHERE (user=$userid) AND (file='$fileid);

Потом проверяю, если есть хоть одна строка результата хотя бы в одном запросе, значит файлик разрешен, иначе нет:

if( (mysql_num_rows($res)+mysql_num_rows($res2))>0 )
echo"разрешен";
else
echo"нафик";

Но мне не нравится. не красиво. Как обойтись одним запросом?

Отправлено: 11:55, 29-11-2005 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


например, UNION первого запроса со вторым. можно с группировкой по user_id, чтоб не тащить лишнего

Отправлено: 12:43, 29-11-2005 | #4


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата:
Юзер может состоять в группе, для которой прописаны разрешения в permit_grops
То есть отдельно юзеру нет разрешения пользоваться файлом, но группе, в которой он состоит, разрешено, поэтому и юзеру тоже разрешается???

Я не знаю точно поддерживает ли третья ветка вложенные запросы, то можно вложенным

Возможно есть ошибки, так как давно этим не занимался:
PHP код: Выделить весь код

SELECT id_user FROM permit_users WHERE id_file='$id_file' OR id_user=(SELECT id_user FROM usgr WHERE id_group=(SELECT id_group FROM permit_groups WHERE id_file='$id_file')) 



Отправлено: 23:36, 29-11-2005 | #5



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » MySQL 3.23. Вывих мозга при создании запроса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] Ошибка при создании оснастки pelmen106 Microsoft Windows 2000/XP 10 18-04-2010 12:48
ошибка при создании образа altairus Автоматическая установка Windows 2000/XP/2003 5 01-02-2009 18:06
Ошибка - при создании нового подключения при сохранений логина и пароля пишет ошибку 1305 p.s-bagdan Microsoft Windows 2000/XP 1 09-10-2008 09:33
Router - Ошибка при создании сети Glamur Сетевое оборудование 3 03-10-2008 21:49
Отключение запроса пароля при загрузке Винды... torino Microsoft Windows 2000/XP 3 15-10-2006 17:29




 
Переход