Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор строк, пересекающихся по нескольким значениям критерия  [new]
sindi8
Member

Откуда:
Сообщений: 7
Добрый день! Подскажите плиз как можно выполнить такой запрос:

имеется таблица с ID пользователей и ID проектов, к которым они имеют доступ
CREATE TABLE #TRole (IDUser int, IDProject int)

INSERT INTO #TRole (IDUser, IDProject) VALUES (1, 100);
INSERT INTO #TRole (IDUser, IDProject) VALUES (1, 101);
INSERT INTO #TRole (IDUser, IDProject) VALUES (1, 102);
INSERT INTO #TRole (IDUser, IDProject) VALUES (2, 101);
INSERT INTO #TRole (IDUser, IDProject) VALUES (2, 102);
INSERT INTO #TRole (IDUser, IDProject) VALUES (2, 103);
INSERT INTO #TRole (IDUser, IDProject) VALUES (2, 104);
INSERT INTO #TRole (IDUser, IDProject) VALUES (3, 100);
INSERT INTO #TRole (IDUser, IDProject) VALUES (3, 101);
INSERT INTO #TRole (IDUser, IDProject) VALUES (3, 102);

необходимо выбрать все IDProject, которые относятся к указанному списку пользователей, т.е. для данного примера
при IDUser=1, 2 и 3 результатом будет IDProject=101, 102, а
при IDUser=1 и 3 - IDProject=100, 101, 102.

Спасибо за помощь
2 июн 09, 13:22    [7255622]     Ответить | Цитировать Сообщить модератору
 Re: Выбор строк, пересекающихся по нескольким значениям критерия  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
select IDProject
  from #TRole
 where IDUser in (1, 2, 3)
 group by IDProject
having count(*) = 3

IDProject
-----------
101
102

(2 row(s) affected)
select IDProject
  from #TRole
 where IDUser in (1, 3)
 group by IDProject
having count(*) = 2

IDProject
-----------
100
101
102

(3 row(s) affected)
2 июн 09, 13:27    [7255647]     Ответить | Цитировать Сообщить модератору
 Re: Выбор строк, пересекающихся по нескольким значениям критерия  [new]
sindi8
Member

Откуда:
Сообщений: 7
спасибо)
2 июн 09, 13:31    [7255674]     Ответить | Цитировать Сообщить модератору
 Re: Выбор строк, пересекающихся по нескольким значениям критерия  [new]
iiyama
Member

Откуда:
Сообщений: 642
можно еще и так поизвращатся
select IDProject from #TRole
where iduser =1
INTERSECT
select IDProject  from #TRole
where iduser =2
INTERSECT
select IDProject  from #TRole
where iduser =3

2 июн 09, 13:36    [7255707]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить