Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 21:59   #1
chui
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 48
По умолчанию Получить пропущенные значения

Дана таблица типа:

Field1 l Field2
a l 1
a l 2
b l
c l 1
c l 3
d l 2
d l 5


Как получить запросом пропущенные значения в Field2 для каждого Field1? Если Field2 пустое, то это не пропуск. А вот если 1 пропущена, как со строками d, тогда это пропуск.
Желательно конкретные значения типа:
c l 2
d l 1
d l 3
d l 4

Но на крайний случай подойдут и диапазоны.
Спасибо.
chui вне форума Ответить с цитированием
Старый 28.11.2013, 22:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Получить нет проблем, например загуглив 'Получить пропущенные значения SQL'. Только всегда интересно - а зачем это нужно, ну если это не лаба или задачка на каком то сайте?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.11.2013, 22:50   #3
chui
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 48
По умолчанию

В базу грузятся данные. И если для Field1 есть Field2, то значения в Field2 должны идти по порядку без пропусков. Если есть пропуск, значит что-то не догрузили.

Нашел ваш пример.
Код:
SELECT T.ClientID+1 AS BegId,T.NextId-1 AS EndId
  FROM (
    SELECT 0 AS ClientID,MIN(C2.ClientID) AS NextId FROM Clients C2
    UNION
    SELECT C1.ClientID,(SELECT MIN(C2.ClientID) FROM Clients C2 WHERE C2.ClientID>C1.ClientID) AS NextId FROM Clients C1) T
  WHERE T.ClientID<(T.NextId-1)
Практически то, что нужно, но есть ли возможность вывести все-таки не диапазоны, а конкретные значения. И как это сделать для каждого field1.
chui вне форума Ответить с цитированием
Старый 28.11.2013, 23:12   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

при загрузке надо делать лог или типа того, тогда такие запросы не придется делать
eval вне форума Ответить с цитированием
Старый 28.11.2013, 23:23   #5
chui
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 48
По умолчанию

С загрузкой проблем нет, но есть нюансы, когда нужно проверить подобным запросом.
chui вне форума Ответить с цитированием
Старый 28.11.2013, 23:33   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну оно всегда так, проблем нет, но почему-то попа выходит
проблему решать надо а не с последствиями бороться, если с загрузкой все ок, зачем ее приплели?
eval вне форума Ответить с цитированием
Старый 28.11.2013, 23:45   #7
chui
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 48
По умолчанию

Мне нужен запрос. Если можете помочь, буду благодарен, в противном случае не вижу смысла объяснять, зачем мне это нужно. Загрузку я не приплетал никуда, а просто ответил на вопрос Аватара.
chui вне форума Ответить с цитированием
Старый 29.11.2013, 17:17   #8
chui
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 48
По умолчанию

Данный запрос позволяет получить пропуски.

Код:
SELECT sq.rn
FROM (
        SELECT ROWNUM AS rn FROM DUAL 
        CONNECT BY ROWNUM <= (SELECT MAX(Field2) FROM Table1)
    ) sq
WHERE sq.rn NOT IN (SELECT Field2 FROM Table1 where Field2 is not null)
Но как добавить сюда Field1?


И еще вопрос. Что делать, если поле типа varchar2? И в нем могут храниться данные null, символы и числа. И проверять нужно только пропуски чисел?
chui вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти пропущенные коды Валенсия34 SQL, базы данных 2 29.04.2013 13:38
Получить значения ComboBox'a WinApi Delphi ][acker Win Api 2 17.03.2013 20:25
Получить числовые значения амплитуд и разниц nionio Помощь студентам 2 14.05.2012 00:32
C#. Получить список параметров метода и их значения Никки C# (си шарп) 1 18.11.2010 16:50
Получить значения функции sin(x) (Pascal) Женек Помощь студентам 1 30.01.2010 00:23