powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проверить пересечение условий в where
19 сообщений из 19, страница 1 из 1
Проверить пересечение условий в where
    #38855262
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Вопрос больше теоретический.
Есть ли простой способ проверки наличия пересечений в условиях выборки?
Например: where a >= 0 and a <= 10 пересекается с условием where a >=- 10 and a <= 5
и с условием where a in (3,4)
Без обращения к выбираемым таблицам.
Подозреваю, что нет, но вдруг, что-то не вижу.
Сложный способ - парсить все это дело вручную и дальше логику громоздить мне не надо.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855265
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vlad333!
You wrote on 15 января 2015 г. 14:50:28:

Vlad333> Сложный способ - парсить все это дело вручную и дальше логику громоздить
> мне не надо. а сервер тут при чем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855276
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
Это делается чисто на сервере, клиент запускает некую процедуру, которая все отрабатывает.
Эти условия сейчас хранятся в таблицах и собираются в процедуре и работают ч-з execute statement.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855279
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vlad333!
You wrote on 15 января 2015 г. 14:57:16:

Vlad333> Эти условия сейчас хранятся в таблицах и собираются в процедуре и
> работают ч-з execute statement. зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855284
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
Удобно, и достаточно универсально.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855286
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,


Код: plaintext
1.
2.
3.
4.
5.
6.
          a*----------------*b

                  c*--------------*d

+--------------------------------------->
O                                        X

Код: sql
1.
2.
select iif( sign(a-d) * sign(b-c) <= 0, 'пересекаются или расположены "в стык"', 'не пересекаются') 
from your_table;
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855299
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vlad333!
You wrote on 15 января 2015 г. 15:08:04:

Vlad333> Удобно, и достаточно универсально.
автоматизация хаоса приумножает энтропию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855300
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

Теперь у него в execute statement еще и это запихнется....

2ТС: А эффект "усушки/утруски" вы уже оценили? Производительность небось сразу до небес взлетела....
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855319
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster2ТС: А эффект "усушки/утруски" вы уже оценили? Производительность небось сразу до небес взлетела....
Это что за эффект такой?
Производительность в данном случае не меняется уже лет 8 как эта система работает.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855326
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,

Тогда зачем разводить весь сыр-бор? Программирование ради программирования?
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855328
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид, спасибо за идею.

Тут больше используется in ( )
и по разным полям. А так же есть возможность подключить вообще любое sql условие можно даже сказать sql инъекцию,
на сколько это можно отнести к ФБ.
, но это уже хардкорное исключение и точно не подлежит автоматической проверке.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855334
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMastervlad333,
Тогда зачем разводить весь сыр-бор? Программирование ради программирования?
Задача озвученная в первом сообщении заключается в автоматическом контроле этих самых условий.
Сейчас это делается вручную глазами. Изменения редкие, но хочется чуть большего удобства,
при минимальных затратах времени на код.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855343
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,

так чего у вас в таблице-то записано ? пример её содержимого можете привести или это Тайна Великая ?
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855352
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,

Насколько я понял, есть набор значений (грубо) в строке: 4,5,6,10,11,12. Он преобразуется в x in (4,....). После преобразований - желательно получить (x>=4 and x<=6) or (x>=10 and x<=12) т.е. вместо простого перечисления чисел в in () вы пытаетесь еще прикрутить догику AND/OR. Как на мой взгляд - нисколько не увеличивает возможность контроля. Ну разве что для длинных диапазонов.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855383
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,DarkMaster ,

Вообще в таблице из которой надо добывать данные по условиям не только и даже не столько числовые данные, больше даже строковых.
field1field2field3FK_ID1aaaa11aaaa21bbbb12bbbb11cccc1

В отдельной таблице условий
для каждого столбца из таблицы данных по которому нужно делать отбор
есть свое поле, содержимое которого вставляется в условие in(....) или not in (....) и идет в ES,
FK_ID field1_conditionfield2_condition3331'aaaa','cccc'
так ,например, для field2: 'aaaa','cccc'
превращается в
select(или update) * from table1 where field2 in ('aaaa','cccc') .

Поле обозначенное FK_ID в результате обновляется и ставится соответствующее ИД из таблицы условий.
Если для field1 в таблице условий есть не null значение, например 1, то оно подклеивается к остальным:
select(или update) * from table1 where field2 in ('aaaa','cccc') and field1 in (1) .
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855392
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMastervlad333,
вместо простого перечисления чисел в in () вы пытаетесь еще прикрутить догику AND/OR. Как на мой взгляд - нисколько не увеличивает возможность контроля. Ну разве что для длинных диапазонов.
В самой первой версии условия хранились целиком в одном поле вообще и подставлялись как есть в where,
сейчас использую in() или not in() по каждому, хотя осколок универсального условия еще остался, но пока
удается его не использовать.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855420
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,

если значения литералов записаны в отдельном столбце, то почему вы не делаете inner join с этим столбцом вашей исходной таблицы ?
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855434
vlad333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,

В таблице условий в одном поле одной записи идет перечисление значений, а не одно значение,
поэтому join не подойдет, не совсем реляционная структура получилась, не говоря уже о нормализации.
Были мысли разбить все это на кучу отдельных таблиц, но они так и оставались мыслями,
слишком много нужно тогда было бы переделывать и на сервере и на клиенте.
...
Рейтинг: 0 / 0
Проверить пересечение условий в where
    #38855452
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad333,

Список можно преобразовать в рекордсет соответствующей процедурой.
Хотя правильно бы хранить их уже в виде таблицы.

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


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