Главная страница
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.318 c
4-87743
E_Dimon
2003-01-13 21:20
2003.02.27
Hook+Mouse(что-то магическое...)


14-87624
Дмитрий К.К.
2003-02-10 06:19
2003.02.27
Именинники 10 февраля


1-87549
Z-man7777
2003-02-17 07:36
2003.02.27
Динамическое создание MenuItem-ов в PopupMenu и в TreeView


1-87514
SkyN
2003-02-15 09:59
2003.02.27
как правильно реализовывают


1-87484
ALex44
2003-02-15 19:22
2003.02.27
RichEdit & Charset