Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql битовая маска

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: mysql битовая маска
s3ga
Отправлено: 31 Июля, 2014 - 09:41:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 152
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Здраствуйте, помогите разобраться, есть таблица - статьи-, в таблице имеется поле -уровень-, уровней всего 3 (1,2,3). Так вот , сейчас статья имеет только один уровень, но необходимо чтобы статья могла иметь несколько, мне посоветовали реализовать это с помощью битовой маски ,так как вариант с ещё одной таблицей отпадает.
1 - низкий уровень
10 - средний уровень
100 - высокий уровень
как хранить эти уровни если например у статьи -низкий и средний уровень- и ещё сложнее как осуществлять выборку?
 
 Top
Tyoma5891
Отправлено: 31 Июля, 2014 - 09:49:40
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




а добавить рядышком поле типа инт куда заносить значение уровня не покатит?
 
 Top
s3ga
Отправлено: 31 Июля, 2014 - 09:57:23
Post Id


Частый гость


Покинул форум
Сообщений всего: 152
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Tyoma5891 пишет:
а добавить рядышком поле типа инт куда заносить значение уровня не покатит?

Похоже не понятно объяснил или сам дурак не понимаю
вообщем таблица -статьи- имеет вид
CODE (SQL):
скопировать код в буфер обмена
  1.   имя       |   уровень
  2. ----------------------------------
  3.  химия     |       1
  4. ----------------------------------
  5. физика     |      2          
  6.  

а нужно хранить несколько уровней, к примеру

CODE (SQL):
скопировать код в буфер обмена
  1.   имя     |     уровень
  2. ----------------------------------
  3.  химия     |       1,2
  4. ----------------------------------
  5. физика    |      2,1,3


Но такой метод хранения не подходит
(Добавление)
решил проблему, спасибо откликнувшимся, храню вместо 1,2,3 - 001,010,100
Если к примеру статься имеет 1 и 2 уровень, то записывается так 011 и выборка
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM -статьи- WHERE уровень & 010
- вернет все статьи с уровнем 2 (010), т.е те у которых второй бит совпал

(Отредактировано автором: 31 Июля, 2014 - 09:58:34)

 
 Top
Мелкий Супермодератор
Отправлено: 31 Июля, 2014 - 11:02:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Замените хотя бы на set. Физически это битовая маска, но хотя бы с читаемым видом.


-----
PostgreSQL DBA
 
 Top
s3ga
Отправлено: 31 Июля, 2014 - 15:39:54
Post Id


Частый гость


Покинул форум
Сообщений всего: 152
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Никогда не использовал set , из документации не понял как его можно к моему примеру привязать. Буду благодарен если приведете.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB