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

Откуда: Н.Новгород
Сообщений: 3220
есть таблицы, пусть так
declare @tab1 table(ccid int,wid int)
declare @tab3 table(ccid int)

insert into @tab1(ccid,wid)
select 1,1 union all
select 1,2 union all
select 2,1 union all
select 3,1 union all
select 2,2 union all
select 2,3 

insert into @tab3(ccid)
 select 1 union all select 2
необходимо выбрать из @tab1 wid1 удовлетворяющих условию, что для каждого ccid1 из @tab3 есть запись (ccid1,wid1) в @tab1
те все такие wid, которые "входят" во ВСЕ ccid
на этом примере должен быть результат

wid
====
1
2

а если в @tab3 вставить не 1 и 2, а 1 и 3, то результат

wid
====
1
9 ноя 04, 14:05    [1091558]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
vooo
Member

Откуда:
Сообщений: 1316
select wid from @tab1 t where exists (select ccid from @tab3 t1 where t1.ccid=t.ccid and t.wid=t.ccid)
???
9 ноя 04, 14:15    [1091611]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
to vooo
долго смотрел, как это работает
нет, это неверно, wid и ccid - совершенно разные вещи
...and t.wid=t.ccid)
- не имеет никакого смысла
9 ноя 04, 14:20    [1091645]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
vooo
Member

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

необходимо выбрать из @tab1 wid1 удовлетворяющих условию, что для каждого ccid1 из @tab3 есть запись (ccid1,wid1) в @tab1
те все такие wid, которые "входят" во ВСЕ ccid

Тогда не очень понятно по тексту условие запроса
9 ноя 04, 14:27    [1091674]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Как-то, либо вопрос криво задан, либо данные не соответствуют поставленному вопросу.
9 ноя 04, 14:27    [1091676]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
вполне возможно что вопрос непонятен, попробую ещё раз
@tab3 - здесь условия
@tab1 - здесь признак соответствия записи условию
т.е. если есть (wid1,ccid1) => запись wid1 соответствует условию ccid1
необходимо вывести записи, которые соответствуют всем условиям из @tab3
9 ноя 04, 14:37    [1091729]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Дмитрий Валуев
Member

Откуда: Южное Тушино
Сообщений: 232
при условии что в обеих таблицах нет дублей
select wid from
(select wid,count(*) cnt  from @tab3 t3 inner join @tab1 t1 on t1.ccid=t3.ccid group by wid) a
where cnt=(select count(*) from @tab3)
9 ноя 04, 14:38    [1091733]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
to Дмитрий Валуев
я тоже вначале хотел было по кол-ву определять, но не надёжно это как-то,
мало ли что...
хочется быть уверенным на 100%
9 ноя 04, 14:43    [1091751]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Дмитрий Валуев
Member

Откуда: Южное Тушино
Сообщений: 232
Smirnov Anton
хочется быть уверенным на 100%

Ну так и докажите методом "от противного"
Предварительно можно поставить проверку на дубли
9 ноя 04, 14:55    [1091801]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом...  [new]
Glory
Member

Откуда:
Сообщений: 104760
я тоже вначале хотел было по кол-ву определять, но не надёжно это как-то,
При наличии первичного ключа в обеих таблицах очень даже надежно.
9 ноя 04, 15:01    [1091826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить