SQL: Выбор столбцов на основе значения столбца из другой таблицы

У меня есть следующие таблицы:

UserPrivileges: 
+--------+------+------+------+
| UserID | Col1 | Col2 | Col3 |
+--------+------+------+------+
|      1 |    0 |    1 |    1 |
|      2 |    0 |    0 |    1 |
|      3 |    1 |    0 |    0 |
|      4 |    1 |    1 |    0 |
+--------+------+------+------+

Data:
+--------+------+------+------+
| DataID | Col1 | Col2 | Col3 |
+--------+------+------+------+
|      1 | A    | B    | C    |
|      2 | D    | E    | F    |
|      3 | G    | H    | I    |
|      4 | J    | K    | L    |
+--------+------+------+------+

Мой вопрос в простейшей форме не имеет ничего общего с таблицей Data , но я все равно объясняю ее, чтобы я мог это неправильно.

Как мне выбрать имена столбцов из UserPrivileges на основе значения? Чтобы я мог использовать результат в другом запросе, чтобы выбрать только эти столбцы.

Что-то вроде этих строк:

SELECT (COLUMNS_NAME_QUERY_FROM_UserPrivileges (UserID = '#')) WHERE DataID = '#' FROM Data

Или я не возражаю против лучшего способа управления привилегиями пользователей для определенных столбцов.

6
задан 26 January 2012 в 14:36
поделиться