Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
14-63737
Карелин Артем
2003-02-05 12:18
2003.02.20
Пить вредно?


14-63792
Tio
2003-02-02 23:17
2003.02.20
Windows 2000 и интернет


6-63717
Власяня
2002-12-26 21:41
2003.02.20
Удалённый доступ


6-63725
John
2002-12-27 19:51
2003.02.20
Консоль и TServerSocket


1-63622
iNew
2003-02-11 09:42
2003.02.20
Возможно ли и если да то как переименовать уже запущенный





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский