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
Форумы портала PHP.SU :: Версия для печати :: mysql битовая маска
Форумы портала PHP.SU » » Вопросы новичков » mysql битовая маска

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

1. s3ga - 31 Июля, 2014 - 09:41:58 - перейти к сообщению
Здраствуйте, помогите разобраться, есть таблица - статьи-, в таблице имеется поле -уровень-, уровней всего 3 (1,2,3). Так вот , сейчас статья имеет только один уровень, но необходимо чтобы статья могла иметь несколько, мне посоветовали реализовать это с помощью битовой маски ,так как вариант с ещё одной таблицей отпадает.
1 - низкий уровень
10 - средний уровень
100 - высокий уровень
как хранить эти уровни если например у статьи -низкий и средний уровень- и ещё сложнее как осуществлять выборку?
2. Tyoma5891 - 31 Июля, 2014 - 09:49:40 - перейти к сообщению
а добавить рядышком поле типа инт куда заносить значение уровня не покатит?
3. s3ga - 31 Июля, 2014 - 09:57:23 - перейти к сообщению
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), т.е те у которых второй бит совпал
4. Мелкий - 31 Июля, 2014 - 11:02:41 - перейти к сообщению
Замените хотя бы на set. Физически это битовая маска, но хотя бы с читаемым видом.
5. s3ga - 31 Июля, 2014 - 15:39:54 - перейти к сообщению
Никогда не использовал set , из документации не понял как его можно к моему примеру привязать. Буду благодарен если приведете.

 

Powered by ExBB FM 1.0 RC1