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

Откуда: там и тут
Сообщений: 949
Привет,

Есть таблица:

create table x (x int, y int)
insert into x values (15, 41), (15, 42), (16,42)

/*
15	41
15	42
16	42
*/

select * from x
select X from X where Y=42
intersect
select X from X where Y=41

drop table x



Как видно (Y=41 and Y=42) есть только с X=15.

select X from table where Y=42
intersect
select X from table where Y=41

выхлоп: X=15

Можно ли выполнить тоже самое в один селект?
Как это сделать наиболее быстро?

---
иногда бывает что очки, которые ищешь, на лбу
29 сен 09, 16:33    [7721210]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Glory
Member

Откуда:
Сообщений: 104760
Robb


Можно ли выполнить тоже самое в один селект?

Это значит, что слово select можно использовать только один раз ? Или нечто другое ?
29 сен 09, 16:38    [7721244]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Ага.

Знаю только такое:

declare @q1 int, @q2 int
set @q1=41
set @q2=42

SELECT x
FROM x
WHERE y IN (@q1, @q2)
GROUP BY x
HAVING COUNT(DISTINCT y) = 2

---
иногда бывает что очки, которые ищешь, на лбу
29 сен 09, 16:50    [7721329]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Robb
select X from table where Y=42
intersect
select X from table where Y=41
Я так и не понял, чем автора не устраивает этот вариант
29 сен 09, 16:53    [7721353]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
Robb

Можно ли выполнить тоже самое в один селект?

да, через select distinct X from .... join ....
29 сен 09, 16:53    [7721355]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
А как вам мой второй пост?
29 сен 09, 16:54    [7721362]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Anddros
Member

Откуда:
Сообщений: 1077
COUNT(DISTINCT y) - изуверская конструкция. :)

В данном случае можно обойтись:
having min(Y)<MAX(Y)

Если Y - not null, конечно...
29 сен 09, 16:56    [7721380]     Ответить | Цитировать Сообщить модератору
 Re: Простая задачка  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Anddros,

Ok )
29 сен 09, 17:04    [7721438]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить