Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / работа с диапазонами / 10 сообщений из 10, страница 1 из 1
05.12.2018, 11:20
    #39742736
warkdimka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
Есть диапазон чисел д1 - задается вручную, и диапазон в бд - д2 (mssql) уже заполненный, как можно запросом сравнить их и получить значения, которые есть в д1, но нет в д2. пример д1(1,2,3,4,5) д2(2,3) вывести 1,4,5
просто сравнивать значения из д1 с д2 по одному очень долго, так как в д1 и д2 могут содержать большие значения
...
Рейтинг: 0 / 0
05.12.2018, 12:00
    #39742752
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
warkdimka,

пример к диапазонам как-то мало подходит. Сравнивать надо строки? Или что? Или начнём с нуля. Как в БД храниться эта информация?
...
Рейтинг: 0 / 0
05.12.2018, 12:44
    #39742778
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
warkdimkaЕсть диапазон чисел д1 - задается вручную, и диапазон в бд - д2 (mssql) уже заполненный, как можно запросом сравнить их и получить значения, которые есть в д1, но нет в д2. пример д1(1,2,3,4,5) д2(2,3) вывести 1,4,5
просто сравнивать значения из д1 с д2 по одному очень долго, так как в д1 и д2 могут содержать большие значенияВариант 1. Если информация в каждом массиве ранжирована, т.е. от 1 до М, то надо постепенно, переходя одновременно в каждом массиве от 1 до М, сравнивать числа.

И не надо будет сравнивать первые числа одного массива с последними числами другого массива.

Вариант 2. Самый простой. Создать два, ну очень больших массива, в которые необходимо занести одни 0.
Далее необходимо все числа заносить в эти массивы по номеру этого числа.
Далее необходимо перебрать все элементы этих двух массивов и определить элементы массива, где 0.
И вот где в одном массиве 0, а в другом число, то это и есть наш случай!
...
Рейтинг: 0 / 0
05.12.2018, 13:22
    #39742805
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
И для варианта 2: необходимо при заполнении двух массивов фиксировать максимальный элемент заполнения, т.е. это будет N, чтобы при сравнении не "гулять" по всему массиву.
...
Рейтинг: 0 / 0
05.12.2018, 14:17
    #39742834
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
Gennadiy Usov,

Какой массив, если это БД MS SQL? Предлагаете в BLOB хранить? Не расточительно ли?
...
Рейтинг: 0 / 0
05.12.2018, 14:23
    #39742842
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
warkdimkaЕсть диапазон чисел д1 - задается вручную, и диапазон в бд - д2 (mssql) уже заполненный, как можно запросом сравнить их и получить значения, которые есть в д1, но нет в д2. пример д1(1,2,3,4,5) д2(2,3) вывести 1,4,5
просто сравнивать значения из д1 с д2 по одному очень долго, так как в д1 и д2 могут содержать большие значения
Код: sql
1.
Select value from D1 where value not in (select value from D2 where value is not null)


в D2 должен быть индекс по value
...
Рейтинг: 0 / 0
06.12.2018, 11:41
    #39743365
warkdimka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
спасибо всем, кто откликнулся.
вариант Select value from D1 where value not in (select value from D2 where value is not null) как писал Dima T подошел, чет я не подумал про not in(
...
Рейтинг: 0 / 0
06.12.2018, 14:56
    #39743543
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
warkdimkaвариант Select value from D1 where value not in (select value from D2 where value is not null) как писал Dima T подошел
Вот только он работает не с диапазонами, а с множествами, но преобразовывать диапазон в множество Вы сами запретили постановкой задачи
warkdimkaв д1 и д2 могут содержать большие значения
Испытайте его на диапазонах 1-10000000 и 200000000-10000000000.
...
Рейтинг: 0 / 0
06.12.2018, 19:40
    #39743809
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
Dimitry Sibiryakovwarkdimkaвариант Select value from D1 where value not in (select value from D2 where value is not null) как писал Dima T подошел
Вот только он работает не с диапазонами, а с множествами, но преобразовывать диапазон в множество Вы сами запретили постановкой задачи
Не, просто хрустальный шар протирай иногда, он же написал
warkdimkaпример д1(1,2,3,4,5) д2(2,3) вывести 1,4,5
Не надо требовать знаний терминологии от начинающих, главное чтобы пример привел.
...
Рейтинг: 0 / 0
17.12.2018, 10:25
    #39748803
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с диапазонами
warkdimka,

Терминология очень важна. Если ты ставишь задачу то будь придирчив к своим словам.

Любое лишне слово или иносказательное может вкорне поменять смысл.

Никакие это не диапазоны. Это множества.

Но отвечающим пришлось поднапрячся сильнее чтоб понять это.

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


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