You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
egoss
Задача, выдавать пользователю информацию о другом пользователе учитывая уровень доступа.
Есть три таблицы
1. Таблица с пользователями `b_users`
2. Таблица уровней доступа к данным пользователя `b_uaccess` : 0 - доступен для всех; 1 - только для друзей; 2 - Только для автора
В данном случае
Пользователь номер 1 разрешил смотреть свой email только друзьям а ICQ могут видеть все.
3. Таблица "Друзей", в ней хранится информация о том кто с кем дружит `b_friends`
В данном случае пользователь номер 1 дружит с пользователем номер 2.
fid - Friend ID
uid - User ID
Сначала на автомате решил задачу выдачи данных пользователю о другом пользователе в три запроса, что не есть гуд.
Вовремя опомнившись, начал искать решение получить данные одним запросом, учитывая права доступа для просматривающего.
так как раньше имел дело только с простыми запросами типа SELECT * FROM `` WHERE ``='', пока удалось сделать только такой запрос.
Вот его часть, получить емайл учитывая уровень доступа владельца к просматривающему.
P.S.
Запрос выполняется только в том случае если ID просматривающего не совпадает с ID просматриваемого.
другими словами если я сам хочу посмотреть свои данные будет выполняться другой простейший запрос, где все данные будут доступны.
/* E-mail */
SELECT
IF(
/* Если являются друзьями и доступ открыт для друзей*/
( (SELECT `email` FROM `b_uaccess` WHERE `uid`=1)=1 AND ( SELECT `id` FROM `b_friends` WHERE `uid`=1 AND `fid`=2) IS NOT NULL )
/* Или если доступ открыт для всех */
OR ((SELECT `email` FROM `b_uaccess` WHERE `uid`=1)=0),
/* Получить емайл пользователя */
(SELECT `email` FROM `b_users` WHERE `id`=1)
/* В противном случае заменимить емайл на 'access denied' в выводе результата */
,'access denied')
AS `email`
Но имхо ето не запрос, а безобразие.
Почитал про запросы на mysql.ru, все теоретически понятно, а вот практики нахватает.
Думаю, что можно составить более простой и компактный запрос.
Интересует также как в таком запросе использовать алиасы, если возможно.
Помогите, пожалуйста, упростить запрос. Заранее, всем спасибо.
Edited by egossLink to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.