Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Необходимо разработать некоторый API, который был бы удобен и интуитивно понятен программистам для составления выражений WHERE в SQL запросах. Например есть какой-то объект (таблица в БД), которая отображается в гриде, хотелось бы ее фильтровать по каким-то условиям. Предположим, что форма для фильтрации содержит нужные контролы, подставляя значения в которые, мы добавляем в выражение WHERE ограничения. В принципе, это частный случай разбора математических выражений, но прежде чем разобрать это математическое выражение, необходимо ее еще записать на этом API. Например каким-то образом надо отфильтровать объект по выражению: Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 19:07 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Добрый день! В принципе, подобный API я писал, и еще писал GUI к нему. Если интересно, пишите сюда ----------------------------------------------------------- Sorry for my terrible English, my native language is C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 11:18 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
А чем вам T-SQL то не нравится? Нормально там все выражается... Варианта тут только два - либо хочется переписать SQL, либо хочется запретить программерам писать inline sql... Cheers Pete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 12:39 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
T-SQL нравится всем и полностью. Но честно скажу, с таким API работать удобнее. ----------------------------------------------------------- Sorry for my terrible English, my native language is C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 12:56 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Да, согласен, с API работать удобнее...Особенно тем программерам которые плохо разбираются с SQL. Все что им нужно знать так это какие контролы на какие поля должны влиять (т.е фильтровать). Еще один важный момент так это если на форме которая предназначена для фильтра расположено куча контролов и каждый фильтрует какое-то поле, так вот если мы один контрол дизейблим, так надо же учитывать и оператор который перед ним стоял (OR, AND...) и что перед оператором...В общем лазить по бинарному дереву построенного выражения WHERE и убирать лишние скобки. А если разработать API то и задумываться над этим приходится меньше и ошибок в коде меньше тем более что если фильтры строятся динамически... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 16:57 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Архитектурой попахивает... Все попытки переложить формирование сиквела в API на функциональных языках программирования заканчивались плохо... Из тех, что я видел и сам когда-то писал, конечно :) А с другой стороны не могу не согласиться с тем, что некоторым людям противопоказано писать сиквел... Cheers Pete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 17:13 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
IMO такой API оправдан в случае необходимости портирования или обеспечения работы системы с разными СУБД. В иных случаях затраты на проектирование и написание не оправдывают результат. Что же касается "универсального динамического фильтра", то тут ситуация такая же. Зачастую (я не хочу обобщать) гораздо проще узнать у пользователей что и по каким критериям они хотят фильтровать именно в этом режиме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 17:20 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Посмотри тут - может, то что надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 20:01 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Писал я как-то CRM систему. И вот когда дошло дело до системы поиска, я загорелся желанием сделать универсальный построитель запросов. Промучился 2 месяца и сделал. Вот в таком виде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Для визуального построения использовался контрол - дерево. На основании метаданных каждый класс предоставлял список своих атрибутов. Все замечательно и красиво, можно построить какой угодно запрос. Но пользователям это не понравилось. Слишком сложно. Гораздо проще построить 2 десятка запросов с определенными параметрами. После чего я так и сделал. Все довольны. Когда пользователи хотят получить еще один отчет, я пишу хранимую процедуру и все. Во-первых на T-SQL я могу построить запрос намного изощреннее, а во-вторых такой изощренный запрос пользователи не смогут построить даже с помощью такого универсального построителя запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 12:32 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Мне не для пользователей необходим постороитель запросов а для программистов и вопрос о том сложно или легко ложится на класс - построитель, а освоение предоставленного API - дело техники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 19:45 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Old Nick...И вот когда дошло дело до системы поиска, я загорелся желанием сделать универсальный построитель запросов...насколько же одинаковые задачи приходится решать :) Для визуального построения использовался контрол - дерево. На основании метаданных каждый класс предоставлял список своих атрибутов. Все замечательно и красиво, можно построить какой угодно запрос. и решения. для хранения использовался XML ...Но пользователям это не понравилось. Слишком сложновот здесь начинаются вариации. у меня была "библиотека" для построенных таким образом запрсов, которая пополнялась наиболее "продвинутыми" пользователями (или нами - разработчиками), и которая была доступна для всех остальных пользователей. причем перед выполнением этих запросов нужно было заполнить значениями уже линейный список атрибутов (в запросе их значения помечались "?"). FedishenМне не для пользователей необходим постороитель запросов а для программистова вот это - нонсенс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2005, 10:31 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Еще разок повторюсь: необходим не визуальный построитель запросов а код - построитель запросов, т.е API с помощью которого можно будет разрулить WHERE - выражения. Пример: У меня есть на форме например 5 контролов, например EditBox. Каждый из контролов фильтрует свое поле в таблице. Надо создать какую-то коллекцию, добавить туда все эти контролы таким образом что бы получилось что то вроде (((editBox1 = поле1 AND editBox2 = поле2 and editBox3 = поле3) OR editBox4 = поле4) AND editBox5 = поле5) Например с первой группой скобок проблем не возникает, можно тупо сделать: Collection.Add(условие1); Collection.Add(условие2); Collection.Add(условие3), где условиеN – это (editBox = поле) и предполагая что если мы вызываем метод Add то условия объединяются по AND. А дальше ведь всю коллекцию надо объединить в скобки и добавить еще одно условие но уже по OR и т.п. А еще мы можем дизейблить контролы, тогда они не учавствуют в условии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 11:45 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Посмотри в сторону компонент ODAC и SDAC, они позволяют делать такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:39 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Хотя такое написать самому можно за пару часов. Описываешь абстрактный класс, с абстрактным методом, который возвращает выражение. Затем описываешь наследники: 1. Класс - Сравнение возвращает выражение типа поле = значение. 2. Класс - коллекция выражений, имеет параметр AND или OR и принимает в качестве элемента коллекции абстракнтый класс. В таком случае можно построить выражение иерархически неограниченной сложности. -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:43 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
Интересно как соотносится Old NickХотя такое написать самому можно за пару часов.и Old NickПромучился 2 месяца и сделал. :) 2 Fedishen Не делайте того, что вы хотите сделать. Оно просто себя не оправдывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:50 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
В общем то я сделал, так что кому интересно могу поделитьс идеей. Никогда не надо говорить фразы типа "не далай", "не оправдывает" и т.п. Для одних - это действительно не оправданно, потому как круг задач ими решаемый несколько отличается от круга задач, решаемых тем человеком для которого это как раз таки оправданно. На самом деле что писал OldNick в последнем посте - похоже на то, что я в конце концов реализовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:50 |
|
||
|
Составление выражений WHERE для SQL запросов
|
|||
|---|---|---|---|
|
#18+
FedishenНикогда не надо говорить фразы типа "не далай", "не оправдывает" и т.п. Для одних - это действительно не оправданно, потому как круг задач ими решаемый несколько отличается от круга задач, решаемых тем человеком для которого это как раз таки оправданно. Понимаете, я не просто так написал "не оправдывает". По моему мнению есть _крайне_ ограниченый круг приложений где создание такого инструментария необходимо. А именно, очень крупные системы, которые могут работать с различными СУБД. Об этом в топике уже говорилось. Здесь важны обе составляющие: а) система должна быть достаточно крупной и сложной, чтобы ручная адаптация запросов к разным СУБД была сильно затруднена. б) вообще требуется поддержка разных СУБД. В иных случаях универсальный построитель запросов для программистов (!) не нужен, плох. Несмотря на то, что идея поначалу кажется красивой. Я работал с такими API, сам принимал участие в их разработке. В итоге они превращаются в монструзный мало понятный код, т.к. постоянно появляются задачи, решение которых в рамках API невозможно и поэтому API требуют доработки. Конечно такой API возможен в неких универсальных framework-ах - построителях всего и вся, но это уже совсем иной разговор. Fedishen, если не сложно, расскажите чуть подробнее зачем вам нужен такой инструмент. Просто интересно. Но только аргументируя не так , а как-то серьезнее что-ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 19:44 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=121&tid=1353835]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 289ms |
| total: | 450ms |

| 0 / 0 |
