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

Откуда:
Сообщений: 7
Помогите с запросом!

Допустим есть следующая таблица:
user_idgroup_id
1A
1B
1C
2B
2C
3A
3C
4A
4B
5A

Надо выбрать всех юзеров, который НЕ входят в группу С.

Здесь должно получиться:
user_id
4
5
5 фев 16, 20:47    [18779795]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
SuperStar88,

А что не получается то? Вариантов реализации масса: EXCEPT, NOT IN, NO EXISTS...
5 фев 16, 21:40    [18780047]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
SuperStar88
Member

Откуда:
Сообщений: 7
Mind,

Пытался сделать при помощи NOT IN и EXISTS, получилось совсем другое
user_id group_id
1A
1B
2B
3A
4A
4B
5A

То есть, выдало всё, кроме тех строк, где С
5 фев 16, 21:51    [18780080]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
Glory
Member

Откуда:
Сообщений: 104751
SuperStar88
То есть, выдало всё, кроме тех строк, где С

Значит вы неправильно написали NOT EXISTS
5 фев 16, 22:14    [18780162]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
xenix
Guest
SELECT C.USER_ID FROM TABLEA C
EXCEPT
SELECT A.USER_ID FROM TABLEA A WHERE A.GROUP_ID='C';

Такое Вам надо?
5 фев 16, 22:26    [18780201]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
MenachemMendel
Member

Откуда:
Сообщений: 8
SuperStar88,

if object_id('tempdb.dbo.#myTable') is not null
	drop table tempdb.dbo.#myTable;

create table tempdb.dbo.#myTable(userid int, groupid nvarchar)
insert into #myTable(userid, groupid)
	values
			(1,	'A'),
			(1,	'B'),
			(1,	'C'),
			(2,	'B'),
			(2,	'C'),
			(3,	'A'),
			(3,	'C'),
			(4,	'A'),
			(4,	'B'),
			(5,	'A')

select userid
from #myTable
where userid not in (select userid
					 from #myTable
					 where groupid = 'C'
					 )
group by userid
6 фев 16, 08:57    [18780913]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
SuperStar88
Member

Откуда:
Сообщений: 7
Всем спасибо за ответы! В понедельник по тестирую :-)

Тема закрыта!
6 фев 16, 19:53    [18782297]     Ответить | Цитировать Сообщить модератору
 Re: Помощь. Выборка из таблицы.  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Так по элегантнее будет :)

DECLARE @t TABLE (
	[user_id] INT,
	group_id CHAR(1)
)
INSERT INTO @t
VALUES
	(1, 'A'), (1, 'B'),
	(1, 'C'), (2, 'B'),
	(2, 'C'), (3, 'A'),
	(3, 'C'), (4, 'A'),
	(4, 'B'), (5, 'A')

SELECT [user_id]
FROM @t
GROUP BY [user_id]
HAVING COUNT(CASE WHEN group_id = 'C' THEN 1 END) = 0
8 фев 16, 10:21    [18785972]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить