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

Вниз

Как сделать выборку по отсутствующем значениям   Найти похожие ветки 

 
SL57   (2003-02-07 11:23) [0]

Если есть посчледовательность данных
типа
1
2
3
5
6
7
8
10
Как сделать выборку, результатом которой будет
набор записей пропущенных из последовательности.
Т.е
4
9


 
passm ©   (2003-02-07 11:27) [1]

SL57 (07.02.03 11:23)> Пахнет рекурсивным запросом :)
СУБД?


 
Виталий Панасенко   (2003-02-07 12:19) [2]

select * from tbl1 t1 where t1.key_field not in (select t2.key_field from tbl1 t2)


 
dimis   (2003-02-07 12:26) [3]


> Виталий Панасенко (07.02.03 12:19)
> select * from tbl1 t1 where t1.key_field not in (select
> t2.key_field from tbl1 t2)

по-моему этот запрос не выдаст ничего
все-таки тип СУБД хорошо бы узнать


 
NDeu ©   (2003-02-07 14:11) [4]

select * from tbl1 t1 where t1.key_field not in (1,2,3,5,6,7,8,10)



 
passm ©   (2003-02-07 14:55) [5]

NDeu © (07.02.03 14:11)> А если строк сотни тысяч? :)


 
NDeu ©   (2003-02-07 15:31) [6]


> passm © (07.02.03 14:55)

См. вопрос автора ;)

Иначе - Виталий Панасенко (07.02.03 12:19) с учетом dimis (07.02.03 12:26)
select * from tbl1 t1 where t1.key_field not in (select t2.key_field from tbl 2 t2)


 
dimis   (2003-02-07 16:16) [7]

куда пропал автор
вопрос интересный


 
passm ©   (2003-02-07 17:24) [8]

NDeu © (07.02.03 15:31)> А если нет tbl1. Есть только одна таблица TABLE1 (ID INTEGER...), где PRIMARY KEY (ID). И нужно найти "дырки" в ID.
На DB2 это выглядело бы так:

WITH NUMS(NUM) AS
(VALUES(1))
UNION ALL
SELECT NUMS.NUM + 1
FROM NUMS
WHERE NUMS.NUM < (SELECT MAX(ID) FROM TABLE1))
SELECT NUMS.NUM
FROM NUMS
WHERE NUMS.NUM NOT IN (SELECT ID FROM TABLE1)


 
ЮЮ ©   (2003-02-08 03:28) [9]

Если достаточно получить не все пропущенные значения CODE, а первые из "непрерывного блока пропущенных значений CODE", то можно так:

SELECT (c.Code + 1) FreeCode
FROM Employment c LEFT JOIN Employment n on c.Code + 1 = n.Code
WHERE n.Code is NULL



 
Bis ©   (2003-02-10 10:52) [10]

пиши или не запросом, а программой, но будет долго.
Второй способ:
заведи дополнительную таблицу, в которой только одно поле, вставь по максимуму чисел и тогда твой запрос будет просто обычным вычитанием.

Ох уж эти дырозаполнятели! И зачем гемморой на свою голову?)


 
Sheriff   (2003-02-10 13:24) [11]

а кто сказал, что проверочная последовательность сама не может содержать дыр?


 
BIS ©   (2003-02-10 14:32) [12]

2Sheriff :
если сам не просверлишь )



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
6-87607
Fredericco
2003-01-10 11:42
2003.02.27
Socket ы. Передача строк.


1-87550
orion_st
2003-02-17 11:51
2003.02.27
Добавление объектов в TStringList


14-87712
Rustiik
2003-02-12 10:58
2003.02.27
Архивация БД


14-87680
Ниул
2003-02-10 19:36
2003.02.27
Как получить результат выполнения функции?


14-87615
Zhenka
2003-02-09 20:51
2003.02.27
Почему некоторые имена выделены жирным шрифтом, а некоторые нет