Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Выбор всех чсловых значений которых нет в таблице...   Найти похожие ветки 

 
Vick ©   (2003-02-03 12:59) [0]

Доброго всем утра. Может кто подскажет как решить проблему такого плана: есть таблица
A B C
-------
1 1 1
2 a c
3 s b
4 r s
6 g g
7 f d
9 s a
10 d e

в поле А есть пропущенные номера, вот их нужно каим-то образом отлавливать запросом и находить минимальный. Как это сделать?


 
stone ©   (2003-02-03 13:04) [1]

Только проехать курсором, получив временную таблицу с отсутствующими номерами, а уж из нее потом выбирай что хочешь.


 
Vick ©   (2003-02-03 13:18) [2]

А без курсора никак нельзя???


 
stone ©   (2003-02-03 13:29) [3]

Можно и так, но это в принципе то же самое

declare
@Min integer,
@Max integer

create table #TmpTable(MyField integer)

set @Min=1 (или 0, смотря что надо)
set @Max = select Max(A) from ТвояТаблица
while @Min<>@Max
begin
if not exists(select A from ТвояТаблица where A=@Min)
insert into #TmpTable(MyField) values(@Min)
end

select min(MyField) from #TmpTable
.... ну и т.д.


 
Vick ©   (2003-02-03 13:47) [4]

Ага, спасибо, получилось :)))))


 
stone ©   (2003-02-03 13:54) [5]

На самом деле все зависит от цели. Если нужно найти просто первое пропущенное значение, то нет необходимости во временной таблице.

declare
@Min integer,

set @Min=1 (или 0, смотря что надо)
while exists(select A from ТвояТаблица where A=@Min)
begin
set @Min=@Min+1
end

select @Min


 
MOA ©   (2003-02-03 14:00) [6]

Например, так:

SELECT MIN(t.A) from t AS t WHERE NOT EXISTS (SELECT * FROM t AS t1 WHERE t1.A=t.A)

Удачи!


 
MOA ©   (2003-02-03 14:03) [7]

Ошибся, прошу прощения...


 
Владислав ©   (2003-02-03 14:04) [8]

select top 1 t1.A + 1
from table1 t1
where not exists(
select *
from table1 t2, table1 t3
where t2.A = t3.A - 1
and t1.A = t2.A
)
order by t1.A


 
MOA ©   (2003-02-03 14:07) [9]

Вот так:

SELECT MIN(t.A+1) from t AS t WHERE NOT EXISTS (SELECT * FROM t AS t1 WHERE t1.A=(t.A+1))



Страницы: 1 вся ветка

Текущий архив: 2003.02.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
3-63480
ik
2003-02-04 17:16
2003.02.20
Как нарисовать CheckBox в DBGrid


9-63466
Mr.Kirya
2002-09-12 21:58
2003.02.20
DxPlay (пересылка файлов)


9-63461
Ангел
2002-09-12 14:13
2003.02.20
Движок для игры типа StarCraft_а на Delphi 6


8-63681
Alex
2002-11-04 19:55
2003.02.20
Полупрозрачный Bitmap поверх картинки В Image


14-63741
sand
2003-02-03 16:43
2003.02.20
drag&drop