Помогите составить запрос

@lexander

Новичок
Помогите составить запрос

есть таблицы связей:
Админы

adm_mod // модов
adm_ver // версий
adm_prj // проектов

Соответствие каждого мода определённой версии
mod_ver

В таблице versions связь осуществляется по полю project_id, т.е. Уникальная версия может принадлежать только одному проекту.

Этот запрос вычисляет, является ли пользователь админом мода с достаточными полномочиями

[sql]
SELECT adm_mod.perm FROM `adm_mod`,`adm_ver`,`adm_prj`,`mod_ver`,`versions` WHERE mod_ver.mod = $id AND versions.id = mod_ver.ver AND ((adm_mod.mod = $id AND adm_mod.adm = {$portal->member['id']} AND adm_mod.perm >= $n) OR (adm_ver.ver = versions.id AND adm_ver.adm = {$portal->member['id']} AND adm_ver.perm >= $n) OR (adm_prj.prj = versions.project_id AND adm_prj.adm = {$portal->member['id']} AND adm_prj.perm >= $n))LIMIT 1
[/sql]

Если найдена хоть одна строка — всё ОК

Желательно вычислить уровень доступа пользователя с учетом того, что если он имеет полномочия уровня n на проект, то на версию и на мод полномочия не должны быть меньше n
Т.е. полномочия могут только расширяться. Другими словами нужно выбрать максимальное значение из perm со всех таблиц.

PS: Возможно есть кардинально другое решение проблемы
 

Andreika

"PHP for nubies" reader
структуру таблиц (с комментами по непонятным полям) и связи между ними плиз.. и что это за запрос? он работает?
 

@lexander

Новичок
Да, работает.
Я уже нашел новый алгоритм, работающий намного быстрее.
Всем спасибо.
 
Сверху