Я пытаюсь понять, как реализовать новую функциональность на моем сайте. Мой сайт позволяет людям загружать вещи, загруженные членами группы. Новая функциональность позволит 1 члену группы быть «супер» пользователем, чьи загрузки не могут быть загружены. Так что на данный момент мой запрос (более или менее) -
SELECT * FROM uploads WHERE group = $groupid
Я думаю, что сохраню статус 'super' члена в таблице 'members', поэтому, возможно, поищу его, чтобы получить идентификатор члена super member перед выполнением запроса.
$all_group_members = SELECT members FROM groups WHERE group_id = $groupid
$super_member = SELECT memberid FROM members WHERE memberid IN ($all_group_members) AND super_status = 1
Затем измените запрос на -
SELECT * FROM uploads WHERE group = $groupid AND uploader ! = $super_member
Однако в группе не всегда может быть супер-член, поэтому у меня вопрос: есть ли более эффективный способ сделать это, например, сохранить идентификаторы супер-членов в файле cookie сессии? А как насчет хранения идентификатора суперпользователя в таблице групп - все еще включает выполнение запроса -
SELECT super_user FROM groups WHERE groupid = $group_id
Но, по крайней мере, это на один запрос меньше.
Разве нет никакого способа обойти это - я знаю, что суперпользователь будет только в 5% случаев, поэтому в 95% случаев этот запрос будет потрачен впустую. Возможно, файл cookie сеанса может хранить переменную group_has_super_user .
Есть ли другие способы сделать это, которых мне не хватает?
спасибо