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

Вниз

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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
3-87352
Timur_2002
2003-02-11 12:20
2003.02.27
Проблемы с AutoIncrement в Access (BDE)


3-87353
Shrek
2003-02-11 12:32
2003.02.27
sql limit offset


14-87686
Павел
2003-02-11 16:25
2003.02.27
Программисты


1-87526
msoftware
2003-02-16 06:55
2003.02.27
Вопрос покомпоненте JvxRichEdit


1-87520
tred
2003-02-16 15:12
2003.02.27
как удалить последнюю строку в string?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский