Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизSQL Найти похожие ветки
← →
Lika (2004-04-12 11:42) [0]Уважаемые мастера, подскажите пожалуйста
как можно заменить условие SQL запроса:
Where (имя_поля LIKE "символьная строка %")OR(имя_поля LIKE "другая символьная строка %")OR(имя_поля LIKE "другая символьная строка %")и т.д (очень длинное условие)
на более оптимальное условие?
Я хотела бы что-то вроде этого:
Where имя_поля IN ("символьная строка", "другая символьная строка",...), но как сделать чтобы сравнение было типа LIKE т.е значение поле начиналось с этих символов, а не полностью совпадало с ними.
Помогите пожалуйста, очень замучалась с таким длинными условиями!
Заранее всем спасибо!
← →
Lika (2004-04-12 11:42) [0]Уважаемые мастера, подскажите пожалуйста
как можно заменить условие SQL запроса:
Where (имя_поля LIKE "символьная строка %")OR(имя_поля LIKE "другая символьная строка %")OR(имя_поля LIKE "другая символьная строка %")и т.д (очень длинное условие)
на более оптимальное условие?
Я хотела бы что-то вроде этого:
Where имя_поля IN ("символьная строка", "другая символьная строка",...), но как сделать чтобы сравнение было типа LIKE т.е значение поле начиналось с этих символов, а не полностью совпадало с ними.
Помогите пожалуйста, очень замучалась с таким длинными условиями!
Заранее всем спасибо!
← →
Nikolay M. © (2004-04-12 11:45) [1]Если только через UNION-ы. Но это значит менять шило на мыло.
← →
Nikolay M. © (2004-04-12 11:45) [1]Если только через UNION-ы. Но это значит менять шило на мыло.
← →
asp © (2004-04-12 11:47) [2]Возможно:
...
WHERE FIELD_NAME LIKE "%строка1%строка2%строка3%"
← →
asp © (2004-04-12 11:47) [2]Возможно:
...
WHERE FIELD_NAME LIKE "%строка1%строка2%строка3%"
← →
Nikolay M. © (2004-04-12 11:56) [3]
> asp © (12.04.04 11:47) [2]
Не катит.
Нужно искать "ABC%" OR "DEF%".
Ты предлагаешь искать "%ABC%DEF%".
Как говорится, почуЙствуйте разницу.
← →
Nikolay M. © (2004-04-12 11:56) [3]
> asp © (12.04.04 11:47) [2]
Не катит.
Нужно искать "ABC%" OR "DEF%".
Ты предлагаешь искать "%ABC%DEF%".
Как говорится, почуЙствуйте разницу.
← →
roottim (2004-04-12 11:56) [4]2asp © (12.04.04 11:47) [2]
фигня
2Lika (12.04.04 11:42)
вы что их руками пишите , или формочки какие для заполнения имеются?
← →
roottim (2004-04-12 11:56) [4]2asp © (12.04.04 11:47) [2]
фигня
2Lika (12.04.04 11:42)
вы что их руками пишите , или формочки какие для заполнения имеются?
← →
asp © (2004-04-12 12:04) [5]Я видел, что "не катит" и потому сделал приписку "возможно".
← →
asp © (2004-04-12 12:04) [5]Я видел, что "не катит" и потому сделал приписку "возможно".
← →
serge35 (2004-04-12 12:05) [6]Может есть еще какое-нибудь служебное поле, по которому можно выбрать эти записи?
← →
serge35 (2004-04-12 12:05) [6]Может есть еще какое-нибудь служебное поле, по которому можно выбрать эти записи?
← →
Lika (2004-04-12 13:18) [7]Нет поля никакого нет.
Речь вообще идет о бухгалтерской программе, где из таблицы проводок нужно оставить записи в которых поле "счет" принимает
одно из значений заранее известного списка счетов, только включая субсчета.
← →
Lika (2004-04-12 13:18) [7]Нет поля никакого нет.
Речь вообще идет о бухгалтерской программе, где из таблицы проводок нужно оставить записи в которых поле "счет" принимает
одно из значений заранее известного списка счетов, только включая субсчета.
← →
serge35 (2004-04-12 13:28) [8]Если уровень вложенности ограничен, например 5 субсчетами, то надо делать UNION для каждого уровня субсчетов.
← →
serge35 (2004-04-12 13:28) [8]Если уровень вложенности ограничен, например 5 субсчетами, то надо делать UNION для каждого уровня субсчетов.
← →
Lika (2004-04-12 13:52) [9]
> Если уровень вложенности ограничен, например 5 субсчетами,
> то надо делать UNION для каждого уровня субсчетов.
Нет он не ограничен у одних счетов может быть 2субсчета, у других 10
← →
Lika (2004-04-12 13:52) [9]
> Если уровень вложенности ограничен, например 5 субсчетами,
> то надо делать UNION для каждого уровня субсчетов.
Нет он не ограничен у одних счетов может быть 2субсчета, у других 10
← →
serge35 (2004-04-12 13:56) [10]Значит надо сделать 10 или лучше 20 UNION, чтобы наверняка.
← →
serge35 (2004-04-12 13:56) [10]Значит надо сделать 10 или лучше 20 UNION, чтобы наверняка.
← →
Lika (2004-04-12 14:07) [11]А что мне даст UNION, у меня и запрос с OR работает.
Мне просто хотелось в идеале, чтобы я вообще в спике переменных могла объявить нужные счета как множество.
А затем в запросах ссылаться на это множество.
А список субсчетов пользователи могут сами менять поэтому я не хочу их "жестко" задавать.
Не ужели нет никаких вариантов?
← →
Lika (2004-04-12 14:07) [11]А что мне даст UNION, у меня и запрос с OR работает.
Мне просто хотелось в идеале, чтобы я вообще в спике переменных могла объявить нужные счета как множество.
А затем в запросах ссылаться на это множество.
А список субсчетов пользователи могут сами менять поэтому я не хочу их "жестко" задавать.
Не ужели нет никаких вариантов?
← →
roottim (2004-04-12 14:20) [12]>нужные счета
если они известны точно, то пожайлуста...
а если нет... то чего сложного непонимаю... автоматизировать создание запроса с like сложно или что?
← →
roottim (2004-04-12 14:20) [12]>нужные счета
если они известны точно, то пожайлуста...
а если нет... то чего сложного непонимаю... автоматизировать создание запроса с like сложно или что?
← →
serge35 (2004-04-12 14:22) [13]А что делают OR? и как организовано хранение счетов в базе?
← →
serge35 (2004-04-12 14:22) [13]А что делают OR? и как организовано хранение счетов в базе?
← →
Курдль © (2004-04-12 14:32) [14]Не мучайте сервер такими запросами, или перепроектируйте базу!
Обычно такие проблемы решаются на клиенте, а не на сервере, элементарной фильтрацией набора данных.
А чаще всего даже более-менее навороченные "гриды" имеют встроенный механизм фильтрации.
← →
Курдль © (2004-04-12 14:32) [14]Не мучайте сервер такими запросами, или перепроектируйте базу!
Обычно такие проблемы решаются на клиенте, а не на сервере, элементарной фильтрацией набора данных.
А чаще всего даже более-менее навороченные "гриды" имеют встроенный механизм фильтрации.
← →
Lika (2004-04-12 14:48) [15]
> А что делают OR? и как организовано хранение счетов в базе?
Все счета хранятся в таблице "план счетов"
> Не мучайте сервер такими запросами, или перепроектируйте
> базу!
> Обычно такие проблемы решаются на клиенте, а не на сервере,
> элементарной фильтрацией набора данных.
> А чаще всего даже более-менее навороченные "гриды" имеют
> встроенный механизм фильтрации.
Структура БД очень проста. А запросы мне нужны не для фильтрации,а для отчетов.
← →
Lika (2004-04-12 14:48) [15]
> А что делают OR? и как организовано хранение счетов в базе?
Все счета хранятся в таблице "план счетов"
> Не мучайте сервер такими запросами, или перепроектируйте
> базу!
> Обычно такие проблемы решаются на клиенте, а не на сервере,
> элементарной фильтрацией набора данных.
> А чаще всего даже более-менее навороченные "гриды" имеют
> встроенный механизм фильтрации.
Структура БД очень проста. А запросы мне нужны не для фильтрации,а для отчетов.
← →
Курдль © (2004-04-12 14:50) [16]А план счетов банковский или "организаций и предприятий"?
← →
Курдль © (2004-04-12 14:50) [16]А план счетов банковский или "организаций и предприятий"?
← →
Lika (2004-04-12 14:54) [17]
> а если нет... то чего сложного непонимаю... автоматизировать
> создание запроса с like сложно или что?
Счета известны, а вот субсчета нет. В этом и вся загвоздка.
> а если нет... то чего сложного непонимаю... автоматизировать
> создание запроса с like сложно или что?
Да сложного наверно ничего,но черезчур длинное условие получается. Хочется как-то автоматизировать программный код, сделать его более гибким что-ли.
← →
Lika (2004-04-12 14:54) [17]
> а если нет... то чего сложного непонимаю... автоматизировать
> создание запроса с like сложно или что?
Счета известны, а вот субсчета нет. В этом и вся загвоздка.
> а если нет... то чего сложного непонимаю... автоматизировать
> создание запроса с like сложно или что?
Да сложного наверно ничего,но черезчур длинное условие получается. Хочется как-то автоматизировать программный код, сделать его более гибким что-ли.
← →
Lika (2004-04-12 14:55) [18]
> А план счетов банковский или "организаций и предприятий"?
План счетов предприятия.
← →
Lika (2004-04-12 14:55) [18]
> А план счетов банковский или "организаций и предприятий"?
План счетов предприятия.
← →
Курдль © (2004-04-12 14:57) [19]
> План счетов предприятия.
И что, он у Вас не иерархический (древовидный)?
Тогда перепроектируйте БД, как я Вам и советовал!
Извлекать субсчета из их кода - методически неверно!
← →
Курдль © (2004-04-12 14:57) [19]
> План счетов предприятия.
И что, он у Вас не иерархический (древовидный)?
Тогда перепроектируйте БД, как я Вам и советовал!
Извлекать субсчета из их кода - методически неверно!
← →
Lika (2004-04-12 15:19) [20]
> Тогда перепроектируйте БД, как я Вам и советовал!
:)) А без этого никак нельзя :), потому что это тема уже отдельного разговора.
А меня интересует в принципе, как можно организовать такого рода запрос. Или это невозможно, неужели в SQL нет варианта на такой случай. :(
← →
Lika (2004-04-12 15:19) [20]
> Тогда перепроектируйте БД, как я Вам и советовал!
:)) А без этого никак нельзя :), потому что это тема уже отдельного разговора.
А меня интересует в принципе, как можно организовать такого рода запрос. Или это невозможно, неужели в SQL нет варианта на такой случай. :(
← →
Курдль © (2004-04-12 15:22) [21]
> А меня интересует в принципе, как можно организовать такого
> рода запрос.
А чего Вы так прикипели к запросам? Напишите процедуру на серваке (это в идеале), кусок кода на клиенте (что тоже не плохо), "универсальный составитель запросов" (это уже прикол)...
← →
Курдль © (2004-04-12 15:22) [21]
> А меня интересует в принципе, как можно организовать такого
> рода запрос.
А чего Вы так прикипели к запросам? Напишите процедуру на серваке (это в идеале), кусок кода на клиенте (что тоже не плохо), "универсальный составитель запросов" (это уже прикол)...
← →
Lika (2004-04-12 15:46) [22]
> "универсальный составитель запросов" (это уже прикол)...
Это идея! Вот с этим запросом разберусь и начну :))(шутка)
> Напишите процедуру на серваке (это в идеале), кусок кода
> на клиенте (что тоже не плохо)
Процедур на серваке полно!:) Но эту проблему они не решают.
Мне нужно просто знать как сравнить значения поля с множеством символьного типа,но не точно,а "приблизительно".
Если кто знает подскажите пожалуйста, плиз.
← →
Lika (2004-04-12 15:46) [22]
> "универсальный составитель запросов" (это уже прикол)...
Это идея! Вот с этим запросом разберусь и начну :))(шутка)
> Напишите процедуру на серваке (это в идеале), кусок кода
> на клиенте (что тоже не плохо)
Процедур на серваке полно!:) Но эту проблему они не решают.
Мне нужно просто знать как сравнить значения поля с множеством символьного типа,но не точно,а "приблизительно".
Если кто знает подскажите пожалуйста, плиз.
← →
serge35 (2004-04-12 15:47) [23]К сожалению разработчики SQL не предусмотрели варианта для работы с планом счетов предприятия...
← →
serge35 (2004-04-12 15:47) [23]К сожалению разработчики SQL не предусмотрели варианта для работы с планом счетов предприятия...
← →
Курдль © (2004-04-12 15:48) [24]В том числе не следует забывать, что кроме LIKE есть "... where substr(FIELD1, i, j) = :STRING1"
← →
Курдль © (2004-04-12 15:48) [24]В том числе не следует забывать, что кроме LIKE есть "... where substr(FIELD1, i, j) = :STRING1"
← →
serge35 (2004-04-12 15:50) [25]Простите, а как динамически определять длину символьной строки и позицию начала сравнения?
← →
serge35 (2004-04-12 15:50) [25]Простите, а как динамически определять длину символьной строки и позицию начала сравнения?
← →
Курдль © (2004-04-12 15:54) [26]
> Простите, а как динамически определять длину символьной
> строки и позицию начала сравнения?
Это ко мне вопрос? Речь идет о сравнении бухгалтерских счетов типа "51_01_05", например, с целью выделить все субсчета этого счета типа "51_*".
В данном случае оперировать позициями и длинами удобнее.
← →
Курдль © (2004-04-12 15:54) [26]
> Простите, а как динамически определять длину символьной
> строки и позицию начала сравнения?
Это ко мне вопрос? Речь идет о сравнении бухгалтерских счетов типа "51_01_05", например, с целью выделить все субсчета этого счета типа "51_*".
В данном случае оперировать позициями и длинами удобнее.
← →
serge35 (2004-04-12 16:41) [27]Это для одного уровня иерархии. А дальше?
Глубина вложенности по условию не ограничена.
← →
serge35 (2004-04-12 16:41) [27]Это для одного уровня иерархии. А дальше?
Глубина вложенности по условию не ограничена.
← →
Lika (2004-04-12 16:41) [28]
> В том числе не следует забывать, что кроме LIKE есть "...
> where substr(FIELD1, i, j) = :STRING1"
Большое спасибо!!! Это то что мне нужно, а почему-то об этом не подумала! Еще раз спасибо!
← →
Lika (2004-04-12 16:41) [28]
> В том числе не следует забывать, что кроме LIKE есть "...
> where substr(FIELD1, i, j) = :STRING1"
Большое спасибо!!! Это то что мне нужно, а почему-то об этом не подумала! Еще раз спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.036 c