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

Откуда:
Сообщений: 100
Здравствуйте!
Есть табличка такого типа

ID, Coutry
1, 1
1, 2
1, 3
2, 1
2, 2
3, 1

Связка по (ID, Country) identity. Нужно выбрать все записи где Country<>3, но при этом, если рядом с 3 находится ID=1, то убрать и записи с ID=1.

В результате нужно получить (желательно без подзапросов)

ID, Coutry
2, 1
2, 2
3, 1

Зарание спасибо!
15 май 09, 10:33    [7183434]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aaaaaaaaa
Guest
select * from table where countty<>3 and id<>1
?
15 май 09, 10:43    [7183503]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
buven
Member

Откуда:
Сообщений: 792
А на сколько "желательно без подзапросов" ? :)
15 май 09, 10:43    [7183504]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
aaaaaaaaa
select * from table where countty<>3 and id<>1
?

А не известно, что id=1 рядом с 3
15 май 09, 10:44    [7183510]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
IRONMAN
aaaaaaaaa
select * from table where countty<>3 and id<>1
?

А не известно, что id=1 рядом с 3

А рядом - это совсем рядом или чуть поодаль ?
15 май 09, 10:45    [7183513]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
buven
А на сколько "желательно без подзапросов" ? :)

Если вообще без подзапросов нельзя, то как-нибудь)))
15 май 09, 10:45    [7183517]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
IRONMAN
А не известно, что id=1 рядом с 3
Вообще ни раз не понял, что это значит...
15 май 09, 10:45    [7183521]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aaaaaaaaaaa
Guest
Это только я не могу понять что значит "рядом" ?
15 май 09, 10:46    [7183530]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
Glory
IRONMAN
aaaaaaaaa
select * from table where countty<>3 and id<>1
?

А не известно, что id=1 рядом с 3

А рядом - это совсем рядом или чуть поодаль ?


это совсем рядом
15 май 09, 10:47    [7183542]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
IRONMAN
это совсем рядом
В пределах одного значения ID или в пределах "соседней строки" по отсортированному в порядке {ID, Country} набору данных?
15 май 09, 10:51    [7183579]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
IRONMAN
Glory
IRONMAN
aaaaaaaaa
select * from table where countty<>3 and id<>1
?

А не известно, что id=1 рядом с 3

А рядом - это совсем рядом или чуть поодаль ?


это совсем рядом

А почему поодаль не считается рядом ?
15 май 09, 10:51    [7183580]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
aaaaaaaaaaa
Это только я не могу понять что значит "рядом" ?

2 этапа:
1)where coutry<>3
запись ID=1, Coutry=3 (третья в моей таблице) - Убираем? Да. Рядом 1? Да.
2)where ID<>1
15 май 09, 10:51    [7183585]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
vino
Member

Откуда:
Сообщений: 1191
IRONMAN
Здравствуйте!
Есть табличка такого типа

ID, Coutry
1, 1
1, 2
1, 3
2, 1
2, 2
3, 1

Связка по (ID, Country) identity. Нужно выбрать все записи где Country<>3, но при этом, если рядом с 3 находится ID=1, то убрать и записи с ID=1.

В результате нужно получить (желательно без подзапросов)

ID, Coutry
2, 1
2, 2
3, 1

Зарание спасибо!

с подзапросом можно, конечно
select * from table f where not exists(select * from table s where s.ID = f.ID and s.Country = 3)
15 май 09, 10:59    [7183640]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Кобанчег
Member

Откуда: Рахів
Сообщений: 761
IRONMAN,
select *
from t
where coutry <> 3
and
id not in (select id from t where coutry = 3) -- все айдишники "рядом" с тройкой
15 май 09, 11:17    [7183812]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
vino
[quot IRONMAN]
quot]
с подзапросом можно, конечно
select * from table f where not exists(select * from table s where s.ID = f.ID and s.Country = 3)


Спасибо за то что поняли, чо значит "рядом")))
15 май 09, 11:17    [7183813]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

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

Спасибо за то что поняли, чо значит "рядом")))

Может вы тогда и другим объясните ?
А то я так и не понял, как и каких единицах отмерить рядом и поодаль
15 май 09, 11:19    [7183831]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Кобанчег
Member

Откуда: Рахів
Сообщений: 761
Glory
IRONMAN

Спасибо за то что поняли, чо значит "рядом")))

Может вы тогда и другим объясните ?
А то я так и не понял, как и каких единицах отмерить рядом и поодаль

Автор, по всей видимости, имел в виду, что исключить из выборки не только все строки с Country=3, но и строки с айдишниками для которых Country=3.
То есть если для некоторого айдишника Country=3, то значит он стоит "рядом".

Если, конечно, мой хрустальный шар сегодня не сбоит.
15 май 09, 11:24    [7183884]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Кобанчег
Glory
IRONMAN

Спасибо за то что поняли, чо значит "рядом")))

Может вы тогда и другим объясните ?
А то я так и не понял, как и каких единицах отмерить рядом и поодаль

Автор, по всей видимости, имел в виду, что исключить из выборки не только все строки с Country=3, но и строки с айдишниками для которых Country=3.
То есть если для некоторого айдишника Country=3, то значит он стоит "рядом".

Если, конечно, мой хрустальный шар сегодня не сбоит.

Мне хотелось бы услышать авторский вариант
15 май 09, 11:25    [7183895]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
Кобанчег
IRONMAN,
select *
from t
where coutry <> 3
and
id not in (select id from t where coutry = 3) -- все айдишники "рядом" с тройкой

Cпасибо! Это тоже подойдет. Как-то обычно использовал not in (1,2,3). Не пришло в голову, что в оператор in можно запрос вставить.
15 май 09, 11:28    [7183926]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
IRONMAN
Member

Откуда:
Сообщений: 100
Glory
IRONMAN

Спасибо за то что поняли, чо значит "рядом")))

Может вы тогда и другим объясните ?
А то я так и не понял, как и каких единицах отмерить рядом и поодаль


Прошу прощения за может быть тупой вопрос, но ведь можно сравнить табличку 1 и табличку 2 и понять, что мне надо. Другие ведь поняли. Про "поодаль" я вообще ничего не упоминал)))
15 май 09, 11:32    [7183959]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
_djХомяг
Guest
может так? :
select t.* from #test t left outer join #test t1 on t.id=t1.id and t1.country=3
where t1.id is null
15 май 09, 11:32    [7183966]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
[offtop]
     Кобанчег, а тебя какая нелегкая заставила пересесть на MS SQL Server?
Или в целях расширения кругозора решил и в эту ветку форума заглядывать?
[/offtop]
15 май 09, 11:34    [7183977]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

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

Прошу прощения за может быть тупой вопрос, но ведь можно сравнить табличку 1 и табличку 2 и понять, что мне надо. Другие ведь поняли. Про "поодаль" я вообще ничего не упоминал)))

А можно съесть грибов, впасть в транс и считать мысли прямо у вас из головы. И туда же внедрить вам решение
И "поодаль" ничем не лучше и не хуже "рядом". Потому что не имеют никакого материального измерения.
15 май 09, 11:35    [7183993]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Кобанчег
Member

Откуда: Рахів
Сообщений: 761
Добрый Э - Эх,
В "горячих темах форума" на главной на sql.ru не нашел ни одной оракловой, поэтому и зашел сюда.
А пересаживаться я не собраюсь, а как раз наоборот: n лет назад переходил с MS SQL на Oracle. :)
З.Ы. А ты может зарегишься все-таки, авось интересные предложения поступят по контактам в профиле или там... найдутся сообщники по интерсам. :)
15 май 09, 11:46    [7184083]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
[offtop]
Кобанчег,
Да, в последнее время скучно на SQL.RU стало. Или все поумнели и не задают интересных задач-вопросов на массовое обсуждение, а решают их сами, или уже все "типовые" задачи перерешали и всё кажется банальщиной. От скуки уже взялся индусам на forums.oracle.com помогать. Но и там изо дня в день всё одно-да-по-тому.

З.Ы.
Насчет регистрации... Есть у меня тут несколько регистраций. Одна из них даже под реальными Ф.И.О. Никаких преимуществ от посещения форума зарегистрированным пользователем не ощутил, поэтому хожу анонимом.
[/offtop]
15 май 09, 12:04    [7184227]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить