Интернет Windows Android

Сформулируйте сложный запрос. Методические указания и задания

Запросы написаны без экранирующих кавычек, так как у MySQL , MS SQL и PostGree они разные.

SQL запрос: получение указанных (нужных) полей из таблицы

SELECT id, country_title, count_people FROM table_name

Получаем список записей: ВСЕ страны и их население. Название нужных полей указываются через запятую.

SELECT * FROM table_name

* обозначает все поля. То есть, будут показы АБСОЛЮТНО ВСЕ поля данных.

SQL запрос: вывод записей из таблицы исключая дубликаты

SELECT DISTINCT country_title FROM table_name

Получаем список записей: страны, где находятся наши пользователи. Пользователей может быть много из одной страны. В этом случае это ваш запрос.

SQL запрос: вывод записей из таблицы по заданному условию

SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000

Получаем список записей: страны, где количество людей больше 100 000 000.

SQL запрос: вывод записей из таблицы с упорядочиванием

SELECT id, city_title FROM table_name ORDER BY city_title

Получаем список записей: города в алфавитном порядке. В начале А, в конце Я.

SELECT id, city_title FROM table_name ORDER BY city_title DESC

Получаем список записей: города в обратном (DESC ) порядке. В начале Я, в конце А.

SQL запрос: подсчет количества записей

SELECT COUNT(*) FROM table_name

Получаем число (количество) записей в таблице. В данном случае НЕТ списка записей.

SQL запрос: вывод нужного диапазона записей

SELECT * FROM table_name LIMIT 2, 3

Получаем 2 (вторую) и 3 (третью) запись из таблицы. Запрос полезен при создании навигации на WEB страницах.

SQL запросы с условиями

Вывод записей из таблицы по заданному условию с использованием логических операторов.

SQL запрос: конструкция AND (И)

SELECT id, city_title FROM table_name WHERE country="Россия" AND oil=1

Получаем список записей: города из России И имеют доступ к нефти. Когда используется оператор AND , то должны совпадать оба условия.

SQL запрос: конструкция OR (ИЛИ)

SELECT id, city_title FROM table_name WHERE country="Россия" OR country="США"

Получаем список записей: все города из России ИЛИ США. Когда используется оператор OR , то должно совпадать ХОТЯ БЫ одно условие.

SQL запрос: конструкция AND NOT (И НЕ)

SELECT id, user_login FROM table_name WHERE country="Россия" AND NOT count_comments<7

Получаем список записей: все пользователи из России И сделавших НЕ МЕНЬШЕ 7 комментариев.

SQL запрос: конструкция IN (В)

SELECT id, user_login FROM table_name WHERE country IN ("Россия", "Болгария", "Китай")

Получаем список записей: все пользователи, которые проживают в (IN ) (России, или Болгарии, или Китая)

SQL запрос: конструкция NOT IN (НЕ В)

SELECT id, user_login FROM table_name WHERE country NOT IN ("Россия","Китай")

Получаем список записей: все пользователи, которые проживают не в (NOT IN ) (России или Китае).

SQL запрос: конструкция IS NULL (пустые или НЕ пустые значения)

SELECT id, user_login FROM table_name WHERE status IS NULL

Получаем список записей: все пользователи, где status не определен. NULL это отдельная тема и поэтому она проверяется отдельно.

SELECT id, user_login FROM table_name WHERE state IS NOT NULL

Получаем список записей: все пользователи, где status определен (НЕ НОЛЬ).

SQL запрос: конструкция LIKE

SELECT id, user_login FROM table_name WHERE surname LIKE "Иван%"

Получаем список записей: пользователи, у которых фамилия начинается с комбинации «Иван». Знак % означает ЛЮБОЕ количество ЛЮБЫХ символов. Чтобы найти знак % требуется использовать экранирование «Иван\%».

SQL запрос: конструкция BETWEEN

SELECT id, user_login FROM table_name WHERE salary BETWEEN 25000 AND 50000

Получаем список записей: пользователи, которые получает зарплату от 25000 до 50000 включительно.

Логических операторов ОЧЕНЬ много, поэтому детально изучите документацию по SQL серверу.

Сложные SQL запросы

SQL запрос: объединение нескольких запросов

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Получаем список записей: пользователи, которые зарегистрированы в системе, а также те пользователи, которые зарегистрированы на форуме отдельно. Оператором UNION можно объединить несколько запросов. UNION действует как SELECT DISTINCT, то есть отбрасывает повторяющиеся значения. Чтобы получить абсолютно все записи, нужно использовать оператор UNION ALL.

SQL запрос: подсчеты значений поля MAX, MIN, SUM, AVG, COUNT

Вывод одного, максимального значения счетчика в таблице:

SELECT MAX(counter) FROM table_name

Вывод одного, минимальный значения счетчика в таблице:

SELECT MIN(counter) FROM table_name

Вывод суммы всех значений счетчиков в таблице:

SELECT SUM(counter) FROM table_name

Вывод среднего значения счетчика в таблице:

SELECT AVG(counter) FROM table_name

Вывод количества счетчиков в таблице:

SELECT COUNT(counter) FROM table_name

Вывод количества счетчиков в цехе №1, в таблице:

SELECT COUNT(counter) FROM table_name WHERE office="Цех №1"

Это самые популярные команды. Рекомендуется, где это возможно, использовать для подсчета именно SQL запросы такого рода, так как ни одна среда программирования не сравнится в скорости обработки данных, чем сам SQL сервер при обработке своих же данных.

SQL запрос: группировка записей

SELECT continent, SUM(country_area) FROM country GROUP BY continent

Получаем список записей: с названием континента и с суммой площадей всех их стран. То есть, если есть справочник стран, где у каждой страны записана ее площадь, то с помощью конструкции GROUP BY можно узнать размер каждого континента (на основе группировки по континентам).

SQL запрос: использование нескольких таблиц через алиас (alias)

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS с WHERE o.custno=c.custno AND c.city="Тюмень"

Получаем список записей: заказы от покупателей, которые проживают только в Тюмени.

На самом деле, при правильном запроектированной базе данных данного вида запрос является самым частым, поэтому в MySQL был введен специальный оператор, который работает в разы быстрее, чем выше написанный код.

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)

Вложенные подзапросы

SELECT * FROM table_name WHERE salary=(SELECT MAX(salary) FROM employee)

Получаем одну запись: информацию о пользователе с максимальным окладом.

Внимание! Вложенные подзапросы являются одним из самых узких мест в SQL серверах. Совместно со своей гибкостью и мощностью, они также существенно увеличивают нагрузку на сервер. Что приводит к катастрофическому замедлению работы других пользователей. Очень часты случаи рекурсивных вызовов при вложенных запросах. Поэтому настоятельно рекомендую НЕ использовать вложенные запросы, а разбивать их на более мелкие. Либо использовать вышеописанную комбинацию LEFT JOIN. Помимо этого данного вида запросы являются повышенным очагом нарушения безопасности. Если решили использовать вложенные подзапросы, то проектировать их нужно очень внимательно и первоначальные запуски сделать на копиях баз (тестовые базы).

SQL запросы изменяющие данные

SQL запрос: INSERT

Инструкция INSERT позволяют вставлять записи в таблицу. Простыми словами, создать строчку с данными в таблице.

Вариант №1. Часто используется инструкция:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

В таблицу «table_name » будет вставлено 2 (два) пользователя сразу.

Вариант №2. Удобнее использовать стиль:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

В этом есть свои преимущества и недостатки.

Основные недостатки:

  • Множество мелких SQL запросов выполняются чуть медленнее, чем один большой SQL запрос, но при этом другие запросы будут стоять в очереди на обслуживание. То есть, если большой SQL запрос будет выполняться 30 минут, то в все это время остальные запросы будут курить бамбук и ждать своей очереди.
  • Запрос получается массивнее, чем предыдущий вариант.

Основные преимущества:

  • Во время мелких SQL запросов, другие SQL запросы не блокируются.
  • Удобство в чтении.
  • Гибкость. В этом варианте, можно не соблюдать структуру, а добавлять только необходимые данные.
  • При формировании подобным образом архивов, можно легко скопировать одну строчку и запустить ее через командную строку (консоль), тем самым не восстанавливая АРХИВ целиком.
  • Стиль записи схож с инструкцией UPDATE, что легче запоминается.

SQL запрос: UPDATE

UPDATE table_name SET user_login="ivanov", user_surname="Иванов" WHERE id=1

В таблице «table_name » в записи с номером id=1, будет изменены значения полей user_login и user_surname на указанные значения.

SQL запрос: DELETE

DELETE FROM table_name WHERE id=3

В таблице table_name будет удалена запись с id номером 3.

  1. Все названия полей рекомендуются писать маленькими буквами и если надо, разделять их через принудительный пробел «_» для совместимости с разными языками программирования, таких как Delphi, Perl, Python и Ruby.
  2. SQL команды писать БОЛЬШИМИ буквами для удобочитаемости. Помните всегда, что после вас могут читать код и другие люди, а скорее всего вы сами через N количество времени.
  3. Называть поля с начала существительное, а потом действие. Например: city_status, user_login, user_name.
  4. Стараться избегать слов резервных в разных языках которые могут вызывать проблемы в языках SQL, PHP или Perl, типа (name, count, link). Например: link можно использовать в MS SQL, но в MySQL зарезервировано.

Данный материал является короткой справкой для повседневной работы и не претендует на супер мега авторитетный источник, коим является первоисточник SQL запросов той или иной базы данных.

Язык запросов Direct Commander Query Language позволяет создавать сложные критерии для отбора объектов: накладывать различные условия на значения полей и комбинировать их с помощью логических операторов.

Запрос вводится в строке текстового фильтра внизу любой панели Коммандера. Запрос с использованием логических операторов начинается с символа = .

  • Составление запроса
  • Запросы из нескольких условий
  • Операторы языка запросов

Составление запроса

Простой запрос состоит из трех частей:

Поле Оператор Значение

Например, запрос заголовок ~ сухари покажет все объявления, у которых в столбце Заголовок содержится слово «сухари» .

Начните вводить запрос с символа = . При этом в строке ввода появляется значок Названия полей и операторы можно выбирать из всплывающих подсказок.

При вводе значения обратите внимание:

Если запрос составлен неправильно, значок в строке ввода меняется на и появляется сообщение об ошибке.

Запросы из нескольких условий

Для составления комбинированных запросов можно использовать операторы & (логическое И) и | (логическое ИЛИ).

Условия в запросе выполняются строго слева направо, но можно изменить порядок с помощью круглых скобок. Условия, заключенные в скобки, имеют приоритет над стандартной последовательностью.

Пример 1

Слова ~ спички | Слова ~ сахар

По этому запросу отбираются фразы, в которых есть ключевое слово «спички» или «сахар» .

Пример 2

Слова ~ спички | Слова ~ сахар & Ставка > 1

По этому запросу отбираются фразы, которые отвечают одновременно двум условиям:

    Имеют ставку на поиске больше 1.

Пример 3

Слова ~ спички | (Слова ~ сахар & Ставка > 1)

По этому запросу отбираются фразы, которые соответствуют хотя бы одному из двух условий:

Операторы языка запросов

В зависимости от поля в DCQL применяются следующие типы операторов.

Оператор Значение Пример Результат
~ Содержит = геотаргетинг ~ австр
!~ Не содержит = геотаргетинг!~ австр
= Модерация!~ [Ожидает]
= Равно/совпадает = геотаргетинг = Австралия
= Номер =
!= Не равно/не совпадает = геотаргетинг!= Австралия
= Номер!=
> Больше = ctr > 0.5
< Меньше = ctr < 0.5
>= Больше либо равно = Ставка >= 1
<= Меньше либо равно = Ставка <= 1
&
|
Оператор Значение Пример Результат
~ Содержит = геотаргетинг ~ австр Отбираются группы объявлений, у которых в столбце Геотаргетинг указано «Австралия» или «Австрия»
= \"Имя изображения\" ~ Отбираются объявления, у которых в столбце Имя изображения указано имя, содержащее подстроку «black» или «white»
= Модерация ~ [Принято; Черновик] Отбираются объявления, у которых в столбце Модерация указано значение «Принято» или «Черновик»
!~ Не содержит = геотаргетинг!~ австр Отбираются группы объявлений, кроме тех, у которых указан геотаргетинг «Австралия» или «Австрия»
= заголовок!~ [спички сухари] Отбираются объявления, у которых значение в столбце Заголовок не содержит подстрок «спички» и «сухари»
= Модерация!~ [Ожидает] Отбираются объявления, у которых в столбце Модерация указано любое значение, кроме «Ожидает» .
= Равно/совпадает = геотаргетинг = Австралия Отбираются только те группы, у которых указан геотаргетинг «Австралия»
= Номер = Отбираются объявления с номерами 111111 и 222222.
!= Не равно/не совпадает = геотаргетинг!= Австралия Отбираются группы, кроме тех, у которых указан геотаргетинг «Австралия»
= Номер!= Отбираются объявления с номерами, отличными от 111111 и 222222.
> Больше = ctr > 0.5 Отбираются фразы с CTR больше 0,5
< Меньше = ctr < 0.5 Отбираются фразы с CTR меньше 0,5
>= Больше либо равно = Ставка >= 1 Отбираются фразы, у которых ставка на поиске больше либо равна 1
<= Меньше либо равно = Ставка <= 1 Отбираются фразы, у которых ставка на поиске меньше либо равна 1
& Логическое «И» в сложных запросах = номер ~ 123 & состояние = \"идут показы\" Отбираются объявления, которые в номере содержат цифры 123 И находятся в состоянии «Идут показы»
| Логическое «ИЛИ» в сложных запросах = название ~ спички | название ~ сахар Отбираются объявления, в названии которых содержится слово «спички» ИЛИ слово «сахар»

Внимание.

Операторы > , >= , < и <= можно использовать только для столбцов с числовыми значениями.

>>Информатика: Способы поиска в Интернете

§ 5. Способы поиска в Интернете

Основные темы параграфа:

♦ три способа поиска в Интернете;
♦ поисковые серверы;
♦ язык запросов поисковой системы.

Три способа поиска в Интернете

Язык запросов поисковой системы

Группа ключевых слов, сформированная по определенным правилам - с помощью языка запросов, называется запросом к поисковому серверу. Языки запросов к разным поисковым серверам очень похожи. Подробнее об этом можно узнать, посетив раздел «Помощь» нужного поискового сервера. Рассмотрим правила формирования запросов на примере поисковой системы Яndех.

Синтаксис оператора
Что означает оператор
Пример запроса
пробел или &
Логическое И (в пределах предложения)
лечебная физкультура
&&
Логическое И (в пределах документа) рецепты && (плавленый сыр)
|
Логическое ИЛИ
фото | фотография | снимок | фотоизображение
+
Обязательное наличие слова в найденном документе
+быть или +не быть
()
Группирование слов
(технология | изготовление) (сыра | творога)
~
Бинарный оператор И НЕ (в пределах предложения)
банки ~ закон
~~
или
-
Бинарный оператор И НЕ (в пределах документа)
путеводитель по Парижу ~~ (агентство | тур)
/(n m)
Расстояние в словах (минус (-) - назад, плюс (+) - вперед) поставщики /2 кофе
музыкальное /(-2 4) образование
вакансии - /+1 студентов
“ ”
Поиск фразы
“красная шапочка”
Эквивалентно: красная
/+1 шапочка
&&/(n m)
Расстояние в предложениях
(минус (-) - назад,
плюс (+) - вперед)
банк && /1 налоги

Чтобы получить лучшие результаты поиска, необходимо запомнить несколько простых правил:

Содержание урока конспект урока опорный каркас презентация урока акселеративные методы интерактивные технологии Практика задачи и упражнения самопроверка практикумы, тренинги, кейсы, квесты домашние задания дискуссионные вопросы риторические вопросы от учеников Иллюстрации аудио-, видеоклипы и мультимедиа фотографии, картинки графики, таблицы, схемы юмор, анекдоты, приколы, комиксы притчи, поговорки, кроссворды, цитаты Дополнения рефераты статьи фишки для любознательных шпаргалки учебники основные и дополнительные словарь терминов прочие Совершенствование учебников и уроков исправление ошибок в учебнике обновление фрагмента в учебнике элементы новаторства на уроке замена устаревших знаний новыми Только для учителей идеальные уроки календарный план на год

Язык запросов - это искусственно созданный язык программирования, используемый для того, чтобы делать запросы в базах данных и информационных системах.

В целом, такие способы запросов можно классифицировать в зависимости от того, служат они для базы данных или для поиска информации. Разница в том, что запросы к подобным сервисам совершаются для получения фактических ответов на поставленные вопросы, в то время как поисковая система пытается найти документы, содержащие сведения, относящиеся к интересующей пользователя области.

Базы данных

Языки запросов по базам данных включают в себя следующие примеры:

  • QL - объектно-ориентированный, относится к преемник Datalog.
  • Контекстный (CQL) - формальный язык представления запросов для информационно-поисковых систем (таких, как веб-индексы или библиографические каталоги).
  • CQLF (CODYASYL) - для CODASYL-TYPE баз данных.
  • Концепт-ориентированный язык запросов (COQL) - используется в соответствующих моделях (com). Он основан на принципах моделирования данных construpt и использует такие операции, как проекция и де-проекция многомерного анализа, аналитические операции и выводы.
  • DMX - используется к моделям
  • Datalog - это язык запросов к дедуктивным базам данных.
  • Gellish English - это язык, который может использоваться для запросов в базы данных Gellish English и позволяет вести диалоги (запросы и ответы), а также служит для информационного моделирования знаний.
  • HTSQL - переводит http-запросы на SQL.
  • ISBL - используется для PRTV (одной из первых реляционных систем управления базами данных).
  • LDAP - это протокол для запросов и служб каталогов, работающий по протоколу TCP/IP.
  • MDX - необходим для баз данных OLAP.

Поисковые системы

Язык поисковых запросов, в свою очередь, направлен на нахождение данных в поисковых системах. Он отличается тем, что часто запросы содержат обычный текст или гипертекст с дополнительным синтаксисом (например, «и»/«или»). Он значительно отличается от стандартных подобных языков, которые регулируются строгими правилами синтаксиса команд или содержат позиционные параметры.

Как классифицируются поисковые запросы?

Существует три широких категории, которые охватывают большинство поисковых запросов: информационная, навигационная и транзакционная. Хотя эта классификация не была закреплена теоретически, эмпирически она подтверждена наличием фактических запросов в поисковых системах.

Информационные запросы - это те, которые охватывают широкие темы (например, какой-либо определенный город или модель грузовиков), в отношении которых может быть получено тысячи релевантных результатов.

Навигационные - это запросы, которые ищут один сайт или веб-страницу на определенную тему (например, YouTube).

Транзакционные - отражают намерение пользователя выполнить определенное действие, например, совершить покупку автомобиля или забронировать билет.

Поисковые системы часто поддерживают четвертый тип запроса, который используется намного реже. Это так называемые запросы подключения, содержащие отчет о связности проиндексированного веб-графика (количество ссылок на определенный URL, или сколько страниц проиндексировано с определенного домена).

Как совершается поиск информации?

Стали известны интересные характеристики, касающиеся веб-поиска:

Средняя длина поискового запроса составляла 2,4 слов.

  • Около половины пользователей направляли один запрос, а чуть меньше трети пользователей делали три или более уникальных запросов один за одним.
  • Почти половина пользователей просматривала только первые одну-две страницы полученных результатов.
  • Менее 5% пользователей используют расширенные возможности поиска (например, выбор каких-либо определенных категорий или поиска в поиске).

Особенности пользовательских действий

Исследование также показало, что 19% запросов содержали географический термин (например, названия, почтовые индексы, географические объекты и т. д.). Еще стоит отметить, что помимо коротких запросов (то есть с несколькими условиями), часто присутствовали и предсказуемые схемы, по которым пользователи меняли свои поисковые фразы.

Также было установлено, что 33% запросов от одного пользователя повторяются, и в 87% случаев юзер будет нажимать на тот же результат. Это говорит о том, что многие пользователи используют повторные запросы, чтобы пересмотреть или заново найти информацию.

Частотные распределения запросов

Кроме того, специалистами было подтверждено, что частотные распределения запросов соответствуют степенному закону. То есть небольшая часть ключевых слов наблюдается в самом большом списке запросов (например, более 100 млн), и они наиболее часто используются. Остальные же фразы в рамках тех же тематик применяются реже и более индивидуально. Это явление получило название принципа Парето (или «правило 80-20»), и оно позволило поисковикам использовать такие методы оптимизации, как индексирование или разбиение базы данных, кэширование и упреждающую загрузку, а также дало возможность совершенствовать язык запросов поисковой системы.

В последние годы было выявлено, что средняя длина запросов неуклонно растет с течением времени. Так, среднестатистический запрос на английском языке стал длиннее. В этой связи компания Google внедрила обновление под названием «Колибри» (в августе 2013 года), которое способно обрабатывать длинные поисковые фразы с непротокольным, «разговорным» языком запроса (наподобие «где ближайшая кофейня?»).

Для более длинных запросов используется их обработка - они разбиваются на фразы, сформулированные стандартным языком, и выводятся ответы на разные части по отдельности.

Структурированные запросы

Поисковые системы, поддерживающие и синтаксис, используют более расширенные языки запроса. Пользователь, который ищет документы, охватывающие несколько тем или граней, может описывать каждую из них по логической характеристике слова. По своей сути, логический язык запросов представляет собой совокупность определенных фраз и знаков препинания.

Что такое расширенный поиск?

Язык запросов «Яндекса» и «Гугла» способен осуществлять более узконаправленный поиск при соблюдении определенных условий. Расширенный поиск может искать по части названия страницы или префиксу заголовка, а также в определенных категориях и перечнях имен. Он также может ограничить поиск страниц, содержащих определенные слова в названии или находящихся в определенных тематических группах. При правильном использовании языка запросов он может обрабатывать параметры на порядок более сложные, чем поверхностные результаты выдачи большинства поисковых систем, в том числе по заданным пользователем словам с переменным окончанием и похожим написанием. При представлении результатов расширенного поиска будет отображена ссылка на соответствующие разделы страницы.

Также это возможность поиска всех страниц, содержащих определенную фразу, в то время как при стандартном запросе поисковые системы не могут остановиться на любой странице обсуждения. Во многих случаях язык запросов может привести на любую страницу, расположенную в тегах noindex.

В некоторых случаях правильно сформированный запрос позволяет найти информацию, содержащую ряд специальных символов и букв других алфавитов (китайские иероглифы например).

Как читаются символы языка запросов?

Верхний и нижний регистр, а также некоторые (умляуты и акценты) не учитываются в поисках. Например, поиск по ключевому слову Citroen не найдет страницы, содержащие слово «Цитроён». Но некоторые лигатуры соответствуют отдельным буквам. Например, поиск по слову «аероскобинг» легко найдет страницы, содержащие «Эрескебинг» (АЭ = Æ).

Многие не алфавитно-цифровые символы постоянно игнорируются. Например, невозможно найти информацию по запросу, содержащему строку |L| (буква между двумя вертикальными полосами), несмотря на то что этот символ используется в некоторых шаблонах конвертирования. В результатах будут только данные с «ЛТ». Некоторые символы и фразы обрабатываются по-разному: запрос «кредит (Финансы)» отобразит статьи со словами «кредит» и «финансы», игнорируя скобки, даже если и существует статья с точным названием «кредит (Финансы)».

Существует множество функций, которые можно использовать с применением языка запросов.

Синтаксис

Язык запросов «Яндекса» и «Гугла» может использовать некоторые знаки препинания для уточнения поиска. В качестве примера можно привести фигурные скобки - {{поиск}}. Фраза, заключенная в них, будет подвергаться поиску целиком, без изменений.

Фраза в позволяет определиться с объектом поиска. Например, слово в кавычках будет распознаваться как используемое в переносном смысле или как вымышленный персонаж, без кавычек - как информация более документального характера.

Кроме того, все основные поисковые системы поддерживают символ «-» для логического «не», а также и/или. Исключение - термины, которые не могут быть разделены с помощью префикса дефисом или тире.

Неточное соответствие поисковой фразы отмечается символом ~. Например, если вы не помните точную формулировку термина или названия, вы можете указать ее в строке поиска с указанным символом, и сможете получить результаты, имеющие максимальное сходство.

Параметры специализированного поиска

Существуют и такие параметры поиска, как intitle, и incategory. Они представляют собой фильтры, отображаемые через двоеточие, в виде «фильтр: строка запроса». Строка запроса может содержать искомый термин или фразу, или же часть либо полное название страницы.

Функция «intitle: запрос» отдает приоритет в поисковой выдаче по названию, но также показывает и обычные результаты по содержанию заголовка. Несколько таких фильтров могут быть использованы одновременно. Как же использовать эту возможность?

Запрос вида «intitle: название аэропорта» выдаст все статьи, содержащие в заголовке название аэропорта. Если же сформулировать его как «парковка intitle: название аэропорта», то вы получите статьи с названием аэропорта в заголовке и с упоминанием парковки в тексте.

Поиск по фильтру «incategory: Категория» работает по принципу первоначальной выдачи статей, принадлежащих к определенной группе или списку страниц. Например, поисковой запрос по типу «Храмы incategory: История» будет выдавать результаты на тему истории храмов. Эту функцию также можно использовать как расширенную, задавая различные параметры.

Используя условия запроса, вы можете находить в базе данных Access определенные элементы. Если элемент соответствует всем введенным условиям, он отобразится в результатах запроса.

Чтобы добавить условие в запрос Access, откройте этот запрос в конструкторе. Затем определите поля (столбцы), на которые распространяется данное условие. Если нужное поле в бланке запроса отсутствует, добавьте его с помощью двойного щелчка. Затем в строке Условия введите для него условие. Дополнительные сведения см. в статье Общие сведения о запросах .

Условие запроса - это выражение, которое Access сравнивает со значениями в полях запроса, чтобы определить, следует ли включать в результат записи, содержащие то или иное значение. Например, = "Воронеж" - это выражение, которое Access сравнивает со значениями в текстовом поле запроса. Если значение этого поля в определенной записи равно "Воронеж" , Access включает ее в результаты запроса.

Рассмотрим несколько примеров часто используемых условий, на основе которых вы можете создавать собственные условия. Примеры группируются по типам данных.

В этом разделе

Общие сведения об условиях запроса

Условие похоже на формулу - это строка, которая может включать ссылки на поля, операторы и константы. В Access условия запроса также называются выражениями.

В следующей таблице показаны примеры условий и описано, как они работают.

Условия

Описание

>25 and <50

Это условие применяется к числовому полю, такому как "Цена" или "ЕдиницНаСкладе". Оно позволяет вывести только те записи, в которых поле "Цена" или "ЕдиницНаСкладе" содержит значение больше 25 и меньше 50 .

DateDiff ("гггг", [ДатаРождения], Date()) > 30

Это условие применяется к полю "Дата/время", такому как "ДатаРождения". В результаты запроса включаются только записи, в которых количество лет между датой рождения человека и текущей датой больше 30 .

Это условие можно применять к полям любого типа для отображения записей, в которых значение поля равно NULL .

Как видите, условия могут значительно отличаться друг от друга в зависимости от типа данных в поле, к которому они применяются, и от ваших требований. Некоторые условия простые и включают только основные операторы и константы. Другие условия сложные: они содержат функции, специальные операторы и ссылки на поля.

В этой статье перечислено несколько часто используемых условий для различных типов данных. Если примеры не отвечают вашим потребностям, возможно, вам придется задать собственные условия. Для этого необходимо сначала ознакомиться с полным списком функций, операторов и специальных знаков, а также с синтаксисом выражений, которые ссылаются на поля и литералы.

Узнаем, где и как можно добавлять условия. Чтобы добавить условия в запрос, необходимо открыть его в Конструкторе. После этого следует определить поля, для которых вы хотите задать условия. Если поля еще нет на бланке запроса, добавьте его, перетащив его из окна конструктора запросов на сетку полей или дважды щелкнув поле (при этом поле автоматически добавляется в следующий пустой столбец в сетке). Наконец, введите условия в строку Условия .

Условия, заданные для разных полей в строке Условия , объединяются с помощью оператора AND. Другими словами, условия, заданные в полях "Город" и "ДатаРождения", интерпретируются следующим образом:

Город = "Воронеж" AND ДатаРождения < DateAdd (" гггг ", -40, Date())

1. Поля "Город" и "ДатаРождения" включают условия.

2. Этому условию соответствуют только записи, в которых поле "Город" имеет значение "Воронеж".

3. Этому условию соответствуют только записи людей, которым не менее 40 лет.

4. В результат будут включены только те записи, которые соответствуют обоим условиям.

Что делать, если требуется, чтобы выполнялось только одно из этих условий? Другими словами, как можно ввести альтернативные условия?

Если у вас есть альтернативные условия, то есть два набора независимых условий, из которых должен выполняться только один, используйте строки Условие отбора и Или на бланке.

1. 1. Условие "Город" указывается в строке "Условие отбора".

2. 2. Условие "ДатаРождения" указывается в строке "или".

Условия, заданные в строках Условие отбора и или , объединяются с помощью оператора OR, как показано ниже.

Город = "Чикаго" OR ДатаРождения < DateAdd("гггг", -40, Date())

Если требуется задать несколько альтернативных условий, используйте строки под строкой или .

Прежде чем приступить к изучению примеров, обратите внимание на следующее:

Условия для текстовых полей, полей Memo и полей гиперссылок

Примечание: Начиная с версии Access 2013, текстовые поля носят название Краткий текст , а поля Memo - Длинный текст .

Следующие примеры относятся к полю "СтранаРегион", основанном на таблице, в которой хранится информация о контактах. Условие задается в строке Условие отбора поля на бланке.

Условие, заданное для поля "Гиперссылка", по умолчанию применяется к отображаемому тексту, который указан в поле. Чтобы задать условия для конечного URL-адреса, используйте выражение HyperlinkPart . У него следующий синтаксис: HyperlinkPart([Таблица1].[Поле1],1) = "http://www.microsoft.com/" , где "Таблица1" - это имя таблицы, содержащей поле гиперссылки, "Поле1" - это само поле гиперссылки, а "http://www.microsoft.com" - это URL-адрес, который вы хотите найти.

Используйте это условие

Результат запроса

Точно соответствуют определенному значению, например "Китай"

Возвращает записи, в которых поле "СтранаРегион" содержит значение "Китай".

Не соответствуют определенному значению, например "Мексика"

Not "Мексика"

Возвращает записи, в которых значением поля "СтранаРегион" не является "Мексика".

Начинаются с заданной строки символов, например "С"

Возвращает записи всех стран или регионов, названия которых начинаются с буквы "С", таких как Словакия и США.

Примечание: Символ "звездочка" (* ) в выражении обозначает любую строку символов. Он также называется подстановочным знаком. Список таких знаков см. в статье Справочные сведения о подстановочных знаках в приложении Access .

Не начинаются с заданной строки символов, например "С"

Возвращает записи всех стран или регионов, названия которых не начинаются с буквы "С".

Like "*Корея*"

Возвращает записи всех стран или регионов, названия которых содержат строку "Корея".

Not Like "*Корея*"

Возвращает записи всех стран или регионов, названия которых не содержат строку "Корея".

Заканчиваются заданной строкой, например "ина"

Возвращает записи всех стран или регионов, названия которых заканчиваются на "ина", таких как "Украина" и "Аргентина".

Не заканчиваются заданной строкой, например "ина"

Not Like "*ина"

Возвращает записи всех стран или регионов, названия которых не заканчиваются на "ина", как в названиях "Украина" и "Аргентина".

Возвращает записи, в которых это поле не содержит значения.

Возвращает записи, в которых это поле содержит значение.

"" (прямые кавычки)

Возвращает записи, в которых поле имеет пустое значение (но не значение NULL). Например, записи о продажах другому отделу могут содержать пустое значение в поле "СтранаРегион".

Возвращает записи, в которых поле "СтранаРегион" имеет непустое значение.

Содержит нулевые значения или пустые строки

Возвращает записи, в которых значение в поле отсутствует или является пустым.

Ненулевые и непустые

Is Not Null And Not ""

Возвращает записи, в которых поле "СтранаРегион" имеет непустое значение, не равное NULL.

При сортировке в алфавитном порядке следуют за определенным значением, например "Мексика"

>= "Мексика"

Возвращает записи с названиями стран и регионов, начиная с Мексики и до конца алфавита.

Входят в определенный диапазон, например от А до Г

Возвращает страны и регионы, названия которых начинается с букв от "А" до "Г".

Совпадают с одним из двух значений, например "Словакия" или "США"

"Словакия" Or "США"

Возвращает записи для США и Словакии.

In("Франция", "Китай", "Германия", "Япония")

Возвращает записи всех стран или регионов, указанных в списке.

Right([СтранаРегион], 1) = "а"

Возвращает записи всех стран или регионов, названия которых заканчиваются на букву "а".

Соответствуют заданной длине

Len([СтранаРегион]) > 10

Возвращает записи стран или регионов, длина названия которых превышает 10 символов.

Соответствуют заданному шаблону

Возвращает записи стран или регионов, названия которых состоят из пяти символов и начинаются с "Лив", например Ливия и Ливан.

Примечание: Символы ? и _ в выражении обозначают один символ. Они также называются подстановочными знаками. Знак _ ? * _ % .

Условия для числовых полей, полей с денежными значениями и полей счетчиков

Следующие примеры относятся к полю "ЦенаЗаЕдиницу", основанном на таблице, в которой хранится информация о товарах. Условие задается в строке Условие отбора поля на бланке запроса.

Чтобы добавить записи, которые...

Используйте это условие

Результат запроса

Точно соответствуют определенному значению, например 1000

Возвращает записи, в которых цена за единицу товара составляет 1000 ₽.

Не соответствуют значению, например 10 000

Возвращает записи, в которых цена за единицу товара не равна 10 000 ₽.

< 1000
<= 1000

Возвращает записи, в которых цена товара меньше 1000 ₽ (<1000). Второе выражение (<=1000) отображает записи, в которых цена не больше 1000 ₽.

>999,99
>=999,99

Возвращает записи, в которых цена товара больше 999,99 ₽ (>999,99). Второе выражение отображает записи, цена в которых не меньше 999,99 ₽.

Возвращает записи, в которых цена товара равна 200 или 250 ₽.

>499,99 and <999,99
или
Between 500 and 1000

Возвращает записи товаров с ценами в диапазоне от 499,99 до 999,99 ₽ (не включая эти значения).

<500 or >1000

Возвращает записи, в которых цена товара не находится в диапазоне от 500 до 1000 ₽.

Содержит одно из заданных значений

In(200, 250, 300)

Возвращает записи, в которых цена товара равна 200, 250 или 300 ₽.

Возвращает записи товаров, цена которых заканчивается на 4,99, например 4,99 ₽, 14,99 ₽, 24,99 ₽ и т. д.

Примечание: Знаки * и % в выражении обозначают любое количество символов. Они также называются подстановочными знаками. Знак % нельзя использовать в одном выражении с символом * , а также с подстановочным знаком ? . Вы можете использовать подстановочный знак % в выражении, где есть подстановочный знак _ .

Возвращает записи, для которых не введено значение в поле "ЦенаЗаЕдиницу".

Возвращает записи, в поле "ЦенаЗаЕдиницу" которых указано значение.

Условия для полей "Дата/время"

Следующие примеры относятся к полю "ДатаЗаказа", основанном на таблице, в которой хранится информация о заказах. Условие задается в строке Условие отбора поля на бланке запроса.

Записи

Используйте этот критерий

Результат запроса

Точно соответствуют значению, например 02.02.2006

Возвращает записи транзакций, выполненных 2 февраля 2006 г. Обязательно ставьте знаки # до и после значений даты, чтобы Access мог отличить значения даты от текстовых строк.

Не соответствуют значению, такому как 02.02.2006

Not #02.02.2006#

< #02.02.2006#

Чтобы просмотреть транзакции, выполненные в определенную дату или до нее, воспользуйтесь оператором <= вместо оператора < .

> #02.02.2006#

Чтобы просмотреть транзакции, выполненные в определенную дату или после нее, воспользуйтесь оператором >= вместо оператора > .

>#02.02.2006# and <#04.02.2006#

Кроме того, для фильтрации по диапазону значений, включая конечные значения, вы можете использовать оператор Between . Например, выражение Between #02.02.2006# and #04.02.2006# идентично выражению >=#02.02.2006# and <=#04.02.2006#.

<#02.02.2006# or >#04.02.2006#

#02.02.2006# or #03.02.2006#

Содержит одно из нескольких значений

In (#01.02.2006#, #01.03.2006#, #01.04.2006#)

Возвращает записи транзакций, выполненных 1 февраля 2006 г., 1 марта 2006 г. или 1 апреля 2006 г.

DatePart("m"; [ДатаПродажи]) = 12

Возвращает записи транзакций, выполненных в декабре любого года.

DatePart("q"; [ДатаПродажи]) = 1

Возвращает записи транзакций, выполненных в первом квартале любого года.

Возвращает записи транзакций, выполненных сегодня. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи, в поле "ДатаЗаказа" которых указано 2 февраля 2006 г.

Возвращает записи транзакций, выполненных вчера. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 1 февраля 2006 г.

Возвращает записи транзакций, которые будут выполнены завтра. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 3 февраля 2006 г.

DatePart("ww"; [ДатаПродажи]) = DatePart("ww"; Date()) and Year([ДатаПродажи]) = Year(Date())

Возвращает записи транзакций, выполненных за текущую неделю. Неделя начинается в воскресенье и заканчивается в субботу.

Year([ДатаПродажи])* 53 + DatePart("ww"; [ДатаПродажи]) = Year(Date())* 53 + DatePart("ww"; Date()) - 1

Возвращает записи транзакций, выполненных за прошлую неделю. Неделя начинается в воскресенье и заканчивается в субботу.

Year([ДатаПродажи])* 53+DatePart("ww"; [ДатаПродажи]) = Year(Date())* 53+DatePart("ww"; Date()) + 1

Возвращает записи транзакций, которые будут выполнены на следующей неделе. Неделя начинается в воскресенье и заканчивается в субботу.

Between Date() and Date()-6

Возвращает записи транзакций, выполненных за последние 7 дней. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период с 24 января 2006 г. по 2 февраля 2006 г.

Year([ДатаПродажи]) = Year(Now()) And Month([ДатаПродажи]) = Month(Now())

Возвращает записи за текущий месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за февраль 2006 г.

Year([ДатаПродажи])* 12 + DatePart("m"; [ДатаПродажи]) = Year(Date())* 12 + DatePart("m"; Date()) - 1

Возвращает записи за прошлый месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за январь 2006 г.

Year([ДатаПродажи])* 12 + DatePart("m"; [ДатаПродажи]) = Year(Date())* 12 + DatePart("m"; Date()) + 1

Возвращает записи за следующий месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за март 2006 г.

Between Date() And DateAdd("M", -1, Date())

Записи о продажах за месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период со 2 января 2006 г. по 2 февраля 2006 г.

Year([ДатаПродажи]) = Year(Now()) And DatePart("q"; Date()) = DatePart("q"; Now())

Возвращает записи за текущий квартал. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за первый квартал 2006 г.

Year([ДатаПродажи])*4+DatePart("q";[ДатаПродажи]) = Year(Date())*4+DatePart("q";Date())- 1

Возвращает записи за прошлый квартал. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за последний квартал 2005 г.

Year([ДатаПродажи])*4+DatePart("q";[ДатаПродажи]) = Year(Date())*4+DatePart("q";Date())+1

Возвращает записи за следующий квартал. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за второй квартал 2006 г.

Year([ДатаПродажи]) = Year(Date())

Возвращает записи за текущий год. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 2006 г.

Year([ДатаПродажи]) = Year(Date()) - 1

Возвращает записи транзакций, выполненных в прошлом году. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 2005 г.

Year([ДатаПродажи]) = Year(Date()) + 1

Возвращает записи транзакций, которые будут выполнены в следующем году. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 2007 г.

Year([ДатаПродажи]) = Year(Date()) and Month([ДатаПродажи]) <= Month(Date()) and Day([ДатаПродажи]) <= Day (Date())

Возвращает записи транзакций, которые приходятся на период с 1 января текущего года до сегодняшней даты. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период с 1 января 2006 г. по 2 февраля 2006 г.

Возвращает записи транзакций, выполненных до сегодняшнего дня.

Возвращает записи транзакций, которые будут выполнены после сегодняшнего дня.

Фильтр пустых (или отсутствующих) значений

Возвращает записи, в которых не указана дата транзакции.

Фильтр непустых значений

Возвращает записи, в которых указана дата транзакции.

Условия для полей "Да/Нет"

В качестве примера, в таблице "Клиенты" есть логическое поле "Активность", которое показывает текущую активность учетной записи клиента. В таблице отображается, как вычисляются значения, введенные в строке условий логического поля.

Значение поля

Результат

"Да", "Истина", 1 или -1

Проверено для значения "Да". После ввода значение 1 или -1 изменяется на "Истина" в строке условий.

"Нет", "Ложь" или 0

Проверено для значения "Нет". После ввода значение 0 изменяется на "Ложь" в строке условий.

Нет значения (null)

Не проверено

Любое число, отличное от 1, -1 или 0

Нет результатов, если это единственное значение условия в поле

Любая строка символов, отличная от "Да", "Нет", "Истина" или "Ложь"

Не удается выполнить запрос из-за ошибки несоответствия типов данных.

Условия для других полей

Вложения. В строке Условие отбора введите Is Null , чтобы включить записи, которые не содержат вложений. Введите Is Not Null , чтобы включить записи с вложениями.

Поля подстановки. Существует два типа полей подстановки: те, которые подставляют значения из существующего источника данных (с помощью внешнего ключа), и те, которые основаны на списке значений, заданном при их создании.

Поля подстановки, основанные на списке значений, имеют текстовый тип данных и принимают такие же условия, как другие текстовые поля.

Условия, которые можно использовать в поле подстановки, основанном на значениях из существующего источника данных, зависят от типа данных внешнего ключа, а не типа подставляемых данных. Например, у вас может быть поле подстановки, которое отображает имя сотрудника, но использует внешний ключ с числовым типом данных. Так как в поле хранится число, а не текст, вы можете использовать условия, которые подходят для чисел, такие как >2 .

Если вы не знаете тип данных внешнего ключа, можно просмотреть исходную таблицу в Конструкторе, чтобы определить его. Для этого:

    Найдите исходную таблицу в области навигации .

    Откройте таблицу в Конструкторе, сделав одно из следующего:

    • Щелкните таблицу и нажмите клавиши CTRL+ВВОД .

      Щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор .

    Тип данных для каждого поля указан в столбце Тип данных на бланке таблицы.

Многозначные поля. Данные в многозначных полях хранятся как строки скрытой таблицы, которые Access создает и заполняет для представления поля. В Конструкторе запроса они представлены в списке полей с помощью расширяемого поля. Чтобы задать условия для многозначного поля, необходимо указать их для одной строки скрытой таблицы. Для этого:

    Создайте запрос, содержащий многозначное поле, и откройте его в Конструкторе.

    Разверните многозначное поле, щелкнув символ плюса (+ ) рядом с ним. Если поле уже развернуто, то выводится минус (- ). Под именем поля вы увидите поле, представляющее одно значение многозначного поля. Это поле будет иметь то же имя, что и многозначное поле, но к нему будет добавлена строка .Значение .

    Перетащите многозначное поле и поле его значения в различные столбцы на бланке. Если вы хотите, чтобы в результатах выводилось только полное многозначное поле, снимите флажок Показать для поля одного значения.

    Введите в поле Условие отбора для поля с одним значением условия, подходящие для типа данных, который представляют собой значения.

    Каждое значение в многозначном поле будет оцениваться по отдельности на основе указанных условий. Например, допустим, что в многозначном поле хранится список чисел. Если указать условия >5 AND <3 , будут выведены все записи, в которых есть по крайней мере одно значение больше 5 и одно значение меньше 3.