Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1082378534
Yanis
2004-04-19 16:42
2004.05.09
HTML


7-1079357186
DuchmanSoft
2004-03-15 16:26
2004.05.09
Приоритет приложения


1-1082404703
ASvencim
2004-04-19 23:58
2004.05.09
Как программно узнать имя сеанса Windows?


4-1079696238
Falendysh
2004-03-19 14:37
2004.05.09
OLE Container Problem


3-1081882753
fatman
2004-04-13 22:59
2004.05.09
совместная работа с БД MS ACCESS двух приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский