Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Привет, помогите, пожалуйста, написать запрос: Есть таблица с порядковыми номерами. Некоторые номера отсуствуют. Их нужно выбрать. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 11:41 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101, в общем случае из базы можно выбрать лишь то, что присутствует. а чего отсутствует - то выбрать нельзя. можно только сгенерировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 11:44 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101 Есть таблица с порядковыми номерами. Некоторые номера отсуствуют. Их нужно выбрать. Большое спасибо. Делаешь селект с сортировкой по порядковому номеру, и потом где-то в цикле при переборе записей, если разница между номерами предыдущей и текущей записи больше 1, выводишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 11:50 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, спасибо за быстрый ответ. Тогда как сгенерировать? (по идее, отсутствующий номер можно вычислить: SNR_OUT = SNR_IN + 1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 11:52 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Pallaris, спасибо за ответ. Проблема в том, что при 10 миллионах записей переберать их в цикле программы очень долго. Нужно решение методами СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:01 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101, положим, в базе будут значения 1 и 1000000. Чего должно быть на выходе? массив данных из 999998 строк со значениями от 2 до 999999 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:04 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101Нужно решение методами СУБД. Сделай хранимую процедуру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:12 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, совершенно верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:32 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Pallaris, это может быть хорошей идеей - нужно попробовать...ну и научиться это делать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:42 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101, как вариант - начни решать задачу поэтапно. на первом этапе получи все диапазоны "дырок" в виде "начало дыры - кончало дыры" на втором этапе сгенерируй строки от начала до кончала каждой дыры. Примерно таким запросом можно поискать дырки (исходная таблица - t, поле с нумерацией - n. замени их на свои названия): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:55 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101Добрый Э - Эх, совершенно верно. оптимальнее будет выводить не 99998 записей в случае пропуска от 2 до 100000, а одну запись с полем start = 3 и полем amount = 99998. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:55 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, в качестве оптимизации [NOT]EXISTS-подзапросов можно воспользоваться [LEFT]JOIN-ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:56 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Pallaris, ну или абсолютные значения "начало - кончало" дырок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 12:58 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
кстати, если прикрутить "переменные" , то, возможно, будет гораздо проще вычислить интервалы дырок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 13:03 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхкстати, если прикрутить "переменные" , то, возможно, будет гораздо проще вычислить интервалы дырок...хотя нет, соврал... переменные хорошо лягут на обратную задачу - если нужно будет свернуть имеющиесы в таблице непрерывные интервалы до вида: "начало непрерывного интервала - кончало непрерывного интервала"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 13:04 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, спасибо за код. Круто, конечно. Так снаскоку, правда, не заработало. Попробую осмыслить суть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 13:39 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101, не заработало молча? или поругалось как-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 13:51 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, тупо подставила в код свои таблицы и свои поля select hb as hb, min(he) as he from ( select snr_num +1 as hb from qxi7488.vkda76 t0 where not exists(select null from qxi7488.vkda76 t1 where t1.snr_num = t0.snr_num + 1) and exists(select null from qxi7488.vkda76 t1 where t1.snr_num > t0.snr_num) ) v_b join ( select n - 1 as he from t t0 where not exists(select null from qxi7488.vkda76 t1 where t1.snr_num = t0.snr_num - 1) and exists(select null from qxi7488.vkda76 t1 where t1.snr_num < t0.snr_num) ) v_e on hb <= he group by hb order by 1 Выдало непонятно что: DSNT408I SQLCODE = -204, ERROR: QXI7488.T IS AN UNDEFINED NAME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:07 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, тупо подставила в код свои таблицы и свои поля: select hb as hb, min(he) as he from ( select snr_num +1 as hb from qxi7488.vkda76 t0 where not exists(select null from qxi7488.vkda76 t1 where t1.snr_num = t0.snr_num + 1) and exists(select null from qxi7488.vkda76 t1 where t1.snr_num > t0.snr_num) ) v_b join ( select n - 1 as he from t t0 where not exists(select null from qxi7488.vkda76 t1 where t1.snr_num = t0.snr_num - 1) and exists(select null from qxi7488.vkda76 t1 where t1.snr_num < t0.snr_num) ) v_e on hb <= he group by hb order by 1 Выдало непонятно что: DSNT408I SQLCODE = -204, ERROR: QXI7488.T IS AN UNDEFINED NAME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:10 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101DSNT408I SQLCODE = -204, ERROR: QXI7488.T IS AN UNDEFINED NAMEА какая у вас СУБД? судя по найденному в яндексе, это DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:14 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101тупо подставила в код свои таблицы и свои поля:не до подставляла. менять нужно было всё выделенное: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:28 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Prima_0101DSNT408I SQLCODE = -204, ERROR: QXI7488.T IS AN UNDEFINED NAMEтут-то как раз все понятно - "Т - неопределенное имя" Или другими словами - "объекта с именем Т в базе не существует" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:30 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, что не по теме, но в базе реально такие названия таблиц и полей? Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:36 |
|
||
|
Как выбрать в таблице отсутствующие номера
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, да, только где у меня в коде такой объект QXI7488.T ? или он динамически генериться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:37 |
|
||
|
|

start [/forum/topic.php?fid=43&tid=1600823]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 436ms |

| 0 / 0 |
