Tariscope 4.x. Руководство пользователя"
3. Программа Tariscope
3.5. Работа с представлениями для вызовов
3.5.10. SQL запросы
Наиболее мощным средством для создания фильтров в Tariscope является их создание на основе SQL запросов. Для создания таких запросов щелкните по иконке Фильтр SQL на панели инструментов или выберите в меню программы Фильтр → Фильтр SQL. Появится окно Фильтр представления, показанное на рисунке 3.5.29.
Рисунок 3.5.29
SQL фильтр позволяет вам создать условия фильтрации любой сложности для любых полей таблицы вызовов. Мы рекомендуем использовать этот способ задания параметров фильтрации в том случае, когда вам не удается создать требуемый фильтр с помощью окна Фильтр или, когда вам проще написать SQL запрос, чем выбирать требуемые поля в окне Фильтр. Как правило, создание SQL запросов требует определенных знаний языка SQL. Однако, интерфейс окна Фильтр представления позволяет создавать огромное число различных запросов практически без знания этого языка.
Окно Фильтр представления (рисунок 3.5.29) делится на две части. Верхняя часть окна обеспечивает создание SQL запроса путем выбора требуемых полей, оператора и ввода необходимый значений. Нижняя часть окна отображает часть SQL запроса, которая находится после оператора WHERE. Если вы знаете язык SQL, вы можете вводить запрос непосредственно в нижней части этого окна.
Если представление вызовов до открытия окна Фильтр представления не содержало никаких условий фильтрации данных, то вид этого окна будет как показано на рисунке 3.5.30.
Рисунок 3.5.30
Чтобы добавить условия фильтрации, щелкните по кнопке “+” в этом окне. Появится новая строка в верхней части окна. Пример такого окна показан на рисунке 3.5.31.
Рисунок 3.5.31
Эта строка состоит из трех частей. В левой части отображается ссылка Выберите поле. Она позволяет выбрать необходимое для фильтрации поле. Средняя часть обеспечивает выбор оператора. По умолчанию отображается значение Равно. Правая части строки предназначена для ввода значения для данного поля.
Щелкните дважды по ссылке Выберите поле. Появится список полей таблицы вызовов. Перечень полей и их описание смотрите в Таблице 3.2. Выберите требуемое поле.
Щелкните по ссылке Равно (средняя часть строки). Появившееся меню содержит перечень возможных операторов для SQL запроса. Выберите требуемый оператор. Перечень таких операторов и их краткое описание приведено в Таблице 3.7.
Таблица 3.7
Оператор | Функция | Результат запроса | Пример использования |
= | Равно | Возвращает все записи, где величина поля равна набору символов, введенному после этого оператора | Вызовы от абонента с номером ‘347’: [Originator] = '347' |
<> | Не равно | Возвращает все записи, где величина поля не равна набору символов, введенному после этого оператора | Вызовы со стоимостью не равной 0: [Cost] <> 0 |
< | Меньше | Возвращает все записи, где значение поля меньше, чем величина, введенная после оператора | Вызовы с продолжительностью меньшей, чем 10 секунд: [CallSeconds]<10 |
<= | Меньше или равно | Возвращает все записи, где значение поля меньше или равно величине, введенной после оператора | Вызовы с датой 20.06.2017 или более ранние: [CallDate] <= '2017-06-20' |
> | Больше | Возвращает все записи, где значение поля больше, чем величина, введенная после оператора | Вызовы со стоимостью более 5 гривен: [Cost] > 5 |
>= | Больше или равно | Возвращает все записи, где значение поля больше или равно величине, введенной после оператора | Вызовы со стоимостью от 5 тенге и более: [Cost] >= 5 |
Like | Шаблон | Возвращает все записи, у которых значение поля соответствует введенному шаблону | Все вызовы в США: [ToTelephone] LIKE '%США%' |
Not Like | Не шаблон | Возвращает все записи, у которых значение поля не соответствует введенному шаблону | Все вызовы за исключением, содержащих ‘Индия’: [ToTelephone] NOT LIKE '%Индия%' |
In | Любое из | Возвращаются записи, значение поля которых входит в список введенных после оператора значений | Междугородние и международные вызовы: [CallType] IN (4, 5) |
Not In | Ни одного из | Возвращаются записи, значение поля которых не входит в список введенных после оператора значений | Вызовы со всех АТС, за исключением АТС с идентификаторами 33,27: NOT ([PBXID] IN (33, 27)) |
Between | Между | Возвращает все записи, где значение поля попадает в заданный интервал | Вызовы за период с 09.06.2017 по 30.06.2017: [CallDate] BETWEEN '2017-06-09' and '2017-06-30' |
Not Between | Не между | Возвращает все записи, где значение поля не попадает в заданный интервал | Все вызовы за исключением периода 01.05.2017 до 09.05.2017: [CallDate] >= '20170501' AND [CallDate] <= '20170509' |
Is null | Пустое | Возвращаются все записи, у которых значение поля равно null. | Вызовы, где поле Источник равно null: [Originator] IS NULL |
Is not null | не пустое | Возвращаются все записи, у которых значение поля не равно null. | Вызовы, где поле Источник не равно null: [Originator] IS NOT NULL |
Дважды щелкните по правой части строки (рисунок 3.5.31). В зависимости от выбранного поля появится либо список предлагаемых значений или позиция для ввода значения. Выберите или введите требуемое значение. В нижней части этого окна будет отображаться SQL запрос.
Чтобы добавить новое условие фильтрации, щелкните по кнопке “+” в этом окне. Появится новая строка. Повторите действия по формированию условия фильтрации, которые описаны выше.
Первое и следующее условия фильтрации связываются логическим оператором. По умолчанию используется оператор И. Для того, чтобы изменить его на другой логический оператор, щелкните по нему и в появившемся меню выберите требуемый оператор.
При желании мы можете отредактировать или непосредственно ввести SQL запрос в нижней части окна.
Пример
Рассмотрим пример создания SQL запроса. Например, нам надо отфильтровать все междугородние и международные вызовы и, которые имеют длительность более 10 минут или их стоимость больше 5 евро.
Чтобы создать такой запрос в окне Фильтр представления щелкните по ссылке И. В появившемся меню выберите пункт Добавить группу. Щелкните по второй ссылке И. В появившемся меню выберите ИЛИ. Щелкните по ссылке Выбрать поле. В появившемся меню выберите пункт Тип вызова. В качестве оператора оставляем значение Равно, которое было задано по умолчанию. Дважды щелкните по ссылке Неизвестный и выберите значение Междугородний. SQL запрос примет вид:
([СallType] = 4)
Чтобы добавить условие, связанное с международными вызовами, щелкните по кнопке “+” возле ссылки ИЛИ. Появится новая строка. Дважды щелкните по ссылке Выберите поле и в появившемся списке выберите Тип вызова. В качестве оператора оставляем значение Равно, которое было задано по умолчанию. Дважды щелкните по ссылке Неизвестный и выберите значение Международный. SQL запрос примет вид:
([CallType] = 4 OR [CallType] = 5)
Чтобы добавить условие фильтрации, связанное с длительностью вызова, щелкните по кнопке “+”, возле ссылки И. Появится новая строка. Дважды щелкните в этой строке по ссылке Выберите поле и в появившемся списке выберите значение Длительность. В качестве оператора выберите значение Больше. Щелкните по ссылке ‘введите значение’ и введите 00:10:00. SQL запрос примет вид:
([CallType] = 4 OR [CallType = 5]) AND CallDuration > '00:10:00'
Следующим шагом мы добавим информацию о стоимости вызовов. Щелкните по кнопке ‘+’ возле ссылки И. Появится новая строка запроса. Дважды щелкните по ссылке Выберите поле и появившемся списке выберите значение Стоимость. В качестве оператора условия фильтрации выберите значение Больше. Щелкните по ссылке ‘введите значение’ и введите 5. SQL запрос примет вид:
([CallType] = 4 OR [CallType] = 5) AND [CallDuration] > '00:10:00' AND [Cost] > 5
Добавьте скобки для выражения: [CallDuration] > '00:10:00' AND [Cost] > 5, и замените И на ИЛИ. SQL запрос примет вид:
([CallType] = 4 OR [CallType] = 5) AND ([CallDuration] > '00:10:00' OR [Cost] > 5)
Щелкните на панели инструментов по ссылке Применить фильтр, и вы увидите в представлении вызовы, которые удовлетворяют созданному SQL запросу.
Возможны другие варианты написания SQL запроса по данному заданию. Полностью аналогичным будет следующий запрос:
((CallType = 4 OR CallType = 5) AND CallDuration > '00:10:00') OR ((CallType = 4 OR CallType = 5) AND Cost > 5)
или
CallType IN (4,5) AND (CallDuration > '00:10:00' OR Cost > 5)
Последний вариант SQL запроса является наиболее компактным. Он использует оператор IN (Любое из), который для данного примера означает, что поле Тип вызова состоит из списка: 4 – соответствует междугородним вызовам и 5 – международным.
Пользователь, который хорошо знаком с синтаксисом SQL запросов может сразу ввести требуемый запрос.
Для быстрой очистки условий фильтрации в окне Фильтр представления щелкните по иконке Очистить на панели инструментов.
Если вы хотите создать в этом окне условия фильтрации данных сохранить для будущего использования, щелкните по иконке Сохранить как, расположенной на панели инструментов.
Для того, чтобы выбрать ранее сохраненный фильтр для его применения или редактирования, щелкните по иконке Открыть на панели инструментов и выберите требуемый фильтр.