Вообще, образец запроса имеет вид той таблицы, к которой он относится. В нем присутствуют те же поля и в том же порядке, что и в соответствующей таблице; отсутствуют лишь ее данные.
При работе с образцом запроса пользователю доступны следующие операции: - связывание таблиц с помощью элемент-примеров; - включение поля в запрос; - удаление операций запроса.
Отметить включение поля в запрос можно различными способами, в зависимости от того, какие данные из конкретного поля пользователь хочет увидеть в запросе.
Paradox допускает следующие включения: - значком _. При этом в таблице Answer будут представлены только уникальные значения поля, отсортированные в порядке возрастания; - значком _+. Этот значок используется при необходимости получить все значения поля, включая повторяющиеся; - значком __ - для сортировки значений в убывающем порядке (от A до Z); - значком _G. Этот значок используется для задания группы записей в SET-запросах. Он позволяет группировать записи по значениям полей, не включая сами поля в таблицу Answer.
2.2. ИЗМЕНЕНИЕ СТРУКТУРЫ ТАБЛИЦЫ ANSWER
При выполнении запроса таблица Answer будет соответствовать образцу запроса: первым полем является крайнее левое поле, отмеченное пользователем в образце запроса, вторым - следующее поле, и т.д.
Если таблица Answer содержит поля с повторяющимися именами (из двух или более таблиц), то Paradox оставит имя первого из этих полей без изменения, а остальные назовет "имя-1", "имя-2" и т.д. Новые вычисляемые поля помещаются в конец таблицы и получают имя в соответствии с формулой, по которой производятся вычисления, если они не переименованы пользователем.
Перед тем, как начать выполнение запроса, пользователь может изменить некоторые свойства таблицы Аnswer: - дать таблице Answer новое имя, что приводит к сохранению таблицы по окончании сеанса работы с Paradox; - выбрать ее тип - Paradox- или dBASE-таблица; - изменить порядок следования полей в таблице.
Также, перед выполнением запроса можно указать способ сортировки записей в таблице Answer.
3. СЕЛЕКЦИЯ ЗАПИСЕЙ
В большинстве случаев в результате запроса пользователь хочет получить только записи, удовлетворяющие определенным условиям. Эти условия задаются в полях образца запроса. B таблицу Answer попадут лишь те записи, значение полей которых удовлетворяют наложенным пользователем условиям выбора.
Условия могут накладываться для: * вывода записей с определенным значением какого-либо поля. Для этого нужное значение просто вводится в соответствующее поле образа запроса.
* поиска алфавитно-цифровых значений, содержащих типографические опечатки или допускающих различное написание. В этих случаях используется оператор LIKE, который ставится перед значением, которое нужно найти.
* выбора записей, не содержащих определенных значений.
Для этого используется оператор NOT. Он ставится перед теми значениями, появления которых пользователь хочет избежать. Этот оператор может ставится перед точными значениями, диапазонами, шаблонами и другими операторами.
* поиска записей, не содержащих никаких значений в определенных полях. В некоторых случаях бывает нужно найти такие записи чтобы внести в них данные. Для этих целей служит оператор BLANK.
3.1. ПОИСК ПО ШАБЛОНУ В Paradox имеются два оператора, которые можно использовать для поиска значений по шаблону. Дополняя оператор LIKE, они существенно расширяют возможности пользователя: * оператор @ заменяет любой символ. При задании шаблонов можно использовать любое количество таких операторов.
* оператор .. заменяет собой последовательность символов любой длины, включая пробелы. Регистр букв при этом не имеет значения.
3.2. УСЛОВНЫЕ ОПЕРАТОРЫ Условные операторы в Paradox - это операторы AND и OR.
Оператор AND выполняет тип действий "логическое И" и используется в тех случаях, когда, например, пользователь хочет в запросе получить записи, которые одновременно удовлетворяют всем введенным условиям. Оператор AND часто служит одним из основных компонентов при задании диапазона значений.
При необходимости выбора записей, удовлетворяющих одному из двух (или нескольких) условий, можно использовать оператор Paradox OR, выполняющим действие "логическое ИЛИ". Если значения-аргументы оператора OR относятся к одному полю, то их следует вводить в это поле, разделяя их ключевым словом OR. Если они принадлежат разным полям, то их надо вводить на разных строках образца запроса.
4. ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТ-ПРИМЕРОВ Элемент-пример применяется в запросе для представления некоторого конкретного значения. В простых запросах можно применять элемент-примеры в сочетании с зарезервированными словами и арифметическими операторами, чтобы производить над значениями полей определенные вычисления. В многотабличных же запросах элемент-примеры используются для связывания таблиц по общим полям.
Пользователь может создавать элемент-примеры сам, либо это может сделать за него Paradox. При работе на цветном мониторе Paradox выделяет их цветом, на монохромном - подсвечивает.
5. АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ В ЗАПРОСАХ Арифметические операторы применяются для составления арифметических выражений со значениями, содержащимися в полях запроса. Paradox допускает использование следующих арифметических операторов: - сложение +; - вычитание -; - умножение *; - деление /; - группирующие скобки ().
В числовых полях Paradox и dBASE можно использовать любые арифметические операторы. Оператор сложения можно использовать также в алфавитно-цифровых полях для слияния значений.
6. ВЫЧИСЛЕНИЯ В ЗАПРОСАХ Помимо возможности извлекать нужные данные из таблиц, можно производить над ними вычисления с помощью оператора CALС. Использование этого оператора позволяет: - составлять и редактировать математические выражения; - комбинировать значения из нескольких полей из одной или нескольких таблиц; - комбинировать значения полей с константами; - создавать новые поля и помещать в них вычисленные значения.
Если в запросе используется оператор CALС, в таблице Answer появляется дополнительное поле (по умолчанию в конце таблицы), содержащее результаты вычислений. Paradox автоматически присваивает этому полю имя в соответствии с формулой, по которой производились вычисления, однако, его можно изменить с помощью оператора AS.
В условиях выбора можно определить те записи, над полями которых будут производится вычисления, а элемент-примерами заменить значения этих полей в формуле.
CALC-выражение может содержать: - константы; - элемент-примеры; - арифметические операторы.
Например, в таблице есть поля "Описание товара","Количество" и "Цена". Для того, чтобы определить стоимость каждого вида товара, нужно включить поля в запрос, в двух последних ввести элемент-пример, соответствующий названию поля и в любое поле записать CALK-выражение. В запросе выглядеть это будет так: T-Описание товара-T-Количество---T--Цена----------------¬ ¦ _ ¦ _ _ Количество . ¦_ _ Цена .,calc _ Количество .¦ ¦ ¦ ¦ * _ Цена .
¦ Выделенные слова - элемент-примеры.
7. ИЗМЕНЕНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСОВ
Механизм создания запросов в Paradox дает пользователю некоторые возможности редактирования данных. В запросах можно использовать следующие зарезервированные слова: - INSERT: вставить записи в таблицу; - DELETE: удалить записи из таблицы; - CHANGETO: изменить определенные значения.
7.1. INSERT-ЗАПРОС
INSERT-запрос позволяет вставлять в таблицу-приемник записи из нескольких таблиц-источников. При этом таблица-приемник и источник могут быть разных типов, например, Paradox и dBASE.
INSERТ-запрос создает в личном каталоге пользователя временную таблицу Inserted. Она переписывается при каждом выполнении запроса и удаляется по окончании сеанса работы с Paradox. Если записи, вставляемые в таблицу-приемник, конфликтуют с ее системой ссылок,или правилами проверки корректности данных (при выполнении INSERT-запроса не учитывается только правила соответствия данных шаблону), Paradox помещает такие записи во временную таблицу Errins. Нарушение системы ссылок может произойти, например, при попытке вставить в дочернюю таблицу запись, значение ключевого поля которой отсутствует в родительской таблице таблице.
7.2. DELETE-ЗАПРОС DELETE-запрос применяется для удаления из таблицы определенных записей. Он удаляет только записи целиком, создает в личном каталоге пользователя таблицу Deleted, содержащую удаленные записи. Paradox поступает с ней также, как и с таблицей Inserted. Можно восстановить удаленные записи, применив INSERT-запрос с таблицей Deleted в качестве источника. Если таблица не имеет ключа, то возвращенные записи независимо от их прежних позиций будут помещены в конец таблицы. При попытке удалить записи, отсутствие которых привело бы к нарушению системы ссылок, Paradox не производит удаления, а лишь помещает копии этих записей во временную таблицу Errdel.
7.3. CHANGETO-ЗАПРОС CHANGETO-запрос позволяет изменять значения полей в таблице, которые удовлетворяют заданным пользователем условиям. Этот запрос бывает крайне полезен при однообразном изменении большого количества значений. CHANGETO-запрос создает в личном каталоге пользователя временную таблицу Changed с исходными оригиналами записей, измененных в процессе выполнения запроса. Она также перезаписывается при каждом при каждом исполнении CHANGEТО-запроса и удаляется по окончании сеанса работы с Paradox. При попытке изменить с помощью CHANGETO-запроса значений ключевых полей (первичных или вторичных), которая привела бы к нарушению системы ссылок, Paradox помещает копии конфликтующих записей во временную таблицу Errchng в личном каталоге пользователя.
8. СЛОЖНЫЕ ЗАПРОСЫ
Используя возможности групповых запросов Рaradox, пользователь может: - Выбирать из базы данных записи по групповым статистическим характеристикам (например, найти виды товаров, на которые поступило два и более заказов) - Производить статистические вычисления внутри групп записей (например, вычислить средние значения сумм, на которые сделаны заказы, по каждой стране) - Сравнивать характеристики групп записей с отдельными записями (например, кто из зарубежных клиентов разместил заказов больше, чем любой российский) Чтобы отвечать на подобные вопросы, необходимо анализировать одновременно данные нескольких записей таблицы, предварительно сгруппировав их нужным образом.