О запросе...

Денис Анатольевич
Дата: 15.12.2002 06:17:55
Доброго времени суток всем!
Суть проблемы в следующем:
Есть таблица, предположим table, в ней 2 столбца, name & year. Требуется выбрать все NAME где нет 2003 YEAR.
Делаю так:
select * from table where year <> 2003


Получается:
Иванов 2002
Иванов 2003
Петров 2002
Сидоров 2001

Оно вроде и понятно, к первой строке условие подходит, но ведь выбирается из таблицы и Иванов 2003. Может кто сталкивался.
Повторюсь, Нужно выбрать все NAME где год не равен 2003, но при этом не отображая тех кто попадает под значение 2002, 2001 и т.д.
Заранее благодарен.
Julius
Дата: 15.12.2002 08:26:07
У вас поле 'year' по всей видимости имеет не целый тип, иначе трудно понять, как такое может быть
alexeyvg
Дата: 15.12.2002 11:13:09

select * from table where name not in (select name from table where year = 2003)
Arch-saint
Дата: 15.12.2002 11:14:39
select [name] from tt as t1 where not exists(select * from tt where [name]=t1.[name] and [year]='2003')
Arch-saint
Дата: 15.12.2002 11:20:41
Можно еще так, смотри, что быстрее:
select tt.name from tt LEFT OUTER JOIN (select name from tt where [year]='2003') as t1 on tt.name=t1.name WHERE t1.name is null
MiCe
Дата: 15.12.2002 12:22:22
select * from table where year <> '2003'
dkstranger
Дата: 15.12.2002 12:23:52
select Distinct name from table
where not name in (select name from table where year=2003)
MiCe
Дата: 15.12.2002 13:17:11
блин .... ну какие подзапросы?... вы о чем?....таблица то одна....
какой тип данных в поле year?
если тип интегральный или текстовой
то select * from table where [year] <> '2003' должен работать...
если тип времядата то вот этот должен работать
select * from table where datepart(yyyy,[year]) <> '2003'
Cat2
Дата: 15.12.2002 13:45:33
MiCe, это выездное заседание КВН.
Я тоже внесу свою лепту

set nocount on

declare @y int
create table #year (y int primary key)
set @i=1
while @i<=9999
begin
insert into #year values (@i)
set @i=@i+1
end

delete from @year where y=2003

select * from table
join #year on convert(int,table.year)=#year.year

drop table #year


Ошибка наверняка в записи значения в поле Year и синтаксис запроса ни причем.
Денис Анатольевич
Дата: 16.12.2002 06:54:23
Огромное Спасибо всем!!
Все заработало