2014-11-27 2 views
-3

У меня есть таблица пользователей, которая имеет «роль доступа», определенную в самой таблице.Имена столбцов столбцов, где они соответствуют определенному значению в sql

Схема:

UserID, UserName, Access_1, Access_2, Access_3, .... Access_10 

Здесь значения для Access_Columns является 1 или 0

Цели: Мне нужны пользователи и их санкционированный доступ в одном столбце, как 'Access_Allowed'.

UserId, Access_Allowed 
1,  (Access_1, Access_3, Access_4, ...) 
2,  (Access_2, Access_3, Access_5, Access_10, ...) 

С уважением,
Yugal

+0

1. См нормализации. – Strawberry

+0

Спасибо за совет Клубника, я знаю, что здесь требуется нормализация, но я придерживаюсь только этой схемы (я не уверен в дизайнере), нужен запрос для целей отчетности. – Yugal

+0

С вашей стороны или частью вашей организации нет никаких обязательств по использованию системы управления реляционными базами данных. Однако, если вы * собираетесь спуститься по этому маршруту, тогда полезно предоставить реляционные данные. Поговорите с деисгнером. Тем временем см. CONCAT() – Strawberry

ответ

0
Thanks Strawberry... I've Used Concat_ws here... 

select userid, username, 
concat_ws(', ', 
IF(Access1 = 1 ,'Access1', NULL), 
IF(Access2 = 1 ,'Access2', NULL), 
IF(Access3 = 1 ,'Access3', NULL), 
IF(Access4 = 1 ,'Access4', NULL), 
. 
. 
IF(AccessN = 1 ,'AccessN',NULL) as Access_Allowed 
from UserTable 

Thanks 
Смежные вопросы