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

Вниз

Сделать выборку пропущенных номеров из БД на SQL   Найти похожие ветки 

 
Radix   (2006-01-26 08:36) [0]

В общем имеется таблица, где в одном из полей (num) хранится последовательность чисел (неких номеров) 1,2,3,4,6,7,10,11,... Среди них могут быть пропущенные (как в примере). Можно ли на sql (Firebird) сделать выборку пропущенных номеров (по примеру - 5,8,9...) ???


 
ЮЮ ©   (2006-01-26 08:42) [1]

Если устроит 5, 8 (без 9), то

SELET t0.ID + 1 FROM
 table t0
 LEFT JOIN t1 ON (t0.ID + 1) = t1.Id
WHERE t1.ID IS NULL


 
Radix   (2006-01-26 08:44) [2]

Спасибо ЮЮ! Сейчас попробую!


 
Digitman ©   (2006-01-26 10:32) [3]

create procedure MissingNumbers
returns (ANumber INTEGER)
AS
declare variable TempNumber INTEGER;
begin
 ANumber = 0;
 for
  select NumField
  from SomeTable
  order by NumField
  into :TempNumber
 do begin
   ANumber = ANumber + 1;
   while (ANumber < TempNumber) do
    begin
     suspend;
     ANumber = ANumber + 1;
    end;
 end;  
end;

..

SELECT * FROM MissingNumbers


 
Johnmen ©   (2006-01-26 10:52) [4]

Классический пример :)
SELECT T1.ID+1, MIN(T2.ID)-1, MIN(T2.ID)-T1.ID-1
FROM TABLE T1
JOIN TABLE T2 ON T1.ID<T2.ID
GROUP BY T1.ID
HAVING MIN(T2.ID)-T1.ID>1
Получаем промежутки в которых отсутствует ID.
В первой колонке будет начальный ID промежутка, во второй - конечный.
В третьей количество отсутствующих ID в промежутке.



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
2-1138272207
Daria
2006-01-26 13:43
2006.02.12
кодировки


1-1136819121
utter
2006-01-09 18:05
2006.02.12
Удаление файлов по маске


8-1125577299
Sanctus
2005-09-01 16:21
2006.02.12
Webcam


2-1137611006
Sysanin
2006-01-18 22:03
2006.02.12
webBrowser


15-1137679046
han_malign
2006-01-19 16:57
2006.02.12
Россия пошатнулась под ударами морозов