powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / задачка -- как выбрать несуществующую информацию ...
5 сообщений из 5, страница 1 из 1
задачка -- как выбрать несуществующую информацию ...
    #33452296
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предположим для упрощения что есть таблица с числами пусть они будут целые и их диапазон может быть любым и разумеется не сквозным например
num
1
4
2
10
14

задача в том чтобы определить какие именно числа отстуствуют в этой таблице в отрезке от min(num) по max(num) очевидно что это 3,5,6,7,8,9,11,12,13

все бы ничего но по условию задачи нельзя использовать хранимки, все должно быть сделано одним селектом с подзапросами на уровне 4.1
запрещено использовать какие либо вспомогательные таблицы существующие до выполнения этого запроса.
задачка только для прокачки, но сама интересна, сижу второе утро, думаю.
...
Рейтинг: 0 / 0
задачка -- как выбрать несуществующую информацию ...
    #33452349
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На практике подобное нужно было с датами.
Решил просто - генерацией шкалы дат в отдельной таблице :)
...
Рейтинг: 0 / 0
задачка -- как выбрать несуществующую информацию ...
    #33452387
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>>Решил просто - генерацией шкалы дат в отдельной таблице :)
на практике то да но все таки не то если например нет ограничений по длине отрезка ну для дат там еще хоть куда ни шло то для чисел даже целых придется делать таблицу из минимум 4 миллиардов строк. или же перед запуском запроса делать еще один запрос в цикле что-ли, все таки нужна хп, определяющая минимум и максимум и генерящая таблицу именно под этот отрезок, маразм.
не а не проходит по условиям, продолжаем думать

хотя задача если вдуматься довольно реальная.
...
Рейтинг: 0 / 0
задачка -- как выбрать несуществующую информацию ...
    #33452407
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем математически она лейгая, она кажется легкой.
Сервер манипулирует дискретными величинами, а не отсутствием величин...

Применительно для цифр можно попробовать провернуть через временную таблицу:
сначала загрузить по четным и нечетным значеним в 2 поля
А потом просто вернуть разницу между ними либо относительно какого-либо элемента, вобщем потом уже закалькулировать результат в явно существующих интервалах...
...
Рейтинг: 0 / 0
задачка -- как выбрать несуществующую информацию ...
    #33453385
max(id)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может так подойдет :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select v.tmp_num
from 
  ( select @a := ifnull(@a, 0 )+  1  
    from t1 a, t1 b, t1 c /* надеюсь хватит ;-)) */
  ) v
where v.tmp_num < (select max(num) from t1)
  and tmp_num not in (select num from t1)
Или так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select v.tmp_num
from 
  ( select @a := (select min(num) from t1) tmp_num
    union
    select @a := @a+  1  
    from t1 a, t1 b, t1 c /* надеюсь хватит ;-)) */
  ) v
where v.tmp_num < (select max(num) from t1)
  and v.tmp_num > (select min(num) from t1)
  and tmp_num not in (select num from t1)
К сожалению под рукой нет 4.1 (только 4.0) поэтому запрос не проверен :-((
Но работать должен, хотя про производительность и оптимизацию говорить не приходится...

P.S. Сам я не "местный" так, что с MySQL не сильно знаком...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / задачка -- как выбрать несуществующую информацию ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]