SQL-фильтр поиска по нескольким значениям столбца - PullRequest
2 голосов
/ 23 декабря 2011

Я имею дело с одной таблицей (более 3 миллионов строк, SQL Server) Мне нужно отфильтровать результаты в соответствии с двумя столбцами ниже:

<code>
...FromID| ToID  |Column5|....
...1001    2001
...1002    2020 
...1003    5000    
...1001    3000 
...2001    1001 
</code>

Теперь пользователь1 может получить доступ к записям с FromID или ToId 1001. FromID|ToID 1001|2001 1001|3000 2001|1001<br>

Пользователь2 может получить доступ к записям с FromID или ToID 1002,1003,3000 FromID|ToID 1002|2020 1003|5000 1001|3000

Какой самый эффективный способ сделать это? Нужно ли создавать представление для каждого пользователя? (Это работает на предприятии, количество пользователей будет макс 100) Благодаря.

PS. Мой самый первый вопрос. O.o

1 Ответ

3 голосов
/ 23 декабря 2011

Ваши критерии доступа кажутся довольно произвольными. Пользователь 1 получает 1001, пользователь 2 получает 1002, 1003 и 3000, и я предполагаю, что пользователи с 3 по 99 также имеют произвольный доступ. В этом случае я рекомендую вам создать таблицу, назовите ее useraccess для этого примера:

user |accessID
---------------
user1|1001
user2|1002
user2|1003
user2|3000
...  |...

Теперь, когда вы хотите узнать, какие строки есть у пользователя, вы можете сделать это:

SELECT t.FromID, t.ToID, [[other columns you care about]]
FROM yourtable t
JOIN useraccess a ON t.FromID = a.accessID OR t.ToID = a.accessID
WHERE a.user = 'user2'

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

Редактировать: Я только что увидел ваше замечание, что у вас уже есть таблица UserRights, поэтому вы уже выполнили шаг 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...