Страница 1 из 1

Получение переменного количества полей в запросе

Добавлено: 27 мар 2007, 09:53
Хыиуду
Проблема такая: есть база данных документов, каждый разбит на N частей (допустим, на 10). Юзер с сайта вводит логин и пароль, и система считывает из базы его уровень доступа (соответственно от 1 до 10). После этого, если он запрашивает какой-то документ, база возвращает все его части с номером, не большим его уровня доступа. Например, если уровень юзера - 4, то он сможет просматривать 1,2,3 и 4 части документов. Такое возможно реализовать средствами MySQL, или надо будет производить отсеивание уже на стороне клиента средствами PHP?

Re: Получение переменного количества полей в запросе

Добавлено: 27 мар 2007, 10:01
Duncon
Угу, в системе авторизации оставь флажок с цифрой доступа (лучше в сессии).
И при запросе в зависимости от этого варьируешь количество возвращяющихся доков.

Re: Получение переменного количества полей в запросе

Добавлено: 27 мар 2007, 10:08
Хыиуду
Нет, количество документов от уровня доступа не зависит. Просто юзер с уровнем 2 может просмотреть 1 и 2 часть документа А, 1 и 2 часть документа Б и 1 и 2 часть документа В. А юзер с уровнем 7 сможет смотреть 1-7 части документов А, Б и В.

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 08:53
Duncon
Ну тогда варьируешь количество возвращяющихся частей. :d

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 09:52
Хыиуду
Вот, собственно, ради того, чтобы узнать, как это делается, я эту тему и открыл ;)

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 11:10
Yurich
Хыиуду писал(а):После этого, если он запрашивает какой-то документ, база возвращает все его части с номером, не большим его уровня доступа.
А какой тип у "части документа" в БД?

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 11:12
Хыиуду
Текст до 10 КБ

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 12:07
Yurich
Хыиуду писал(а):Текст до 10 КБ
Тогда наверное стоит делать так:

Код: Выделить всё


select 
if(@Level >= 1, Part1, NULL) as Part1, 
if(@Level >= 2, Part2, NULL) as Part2, 
...
if(@Level >= 10, Part10, NULL) as Part10 
from Document
where
....

Re: Получение переменного количества полей в запросе

Добавлено: 28 мар 2007, 14:29
Хыиуду
Спасибо, именно это я и хотел услышать!